aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.c-torture
diff options
context:
space:
mode:
authorPaul Brook <paul@nowt.org>2003-09-10 19:53:37 +0000
committerPaul Brook <paul@nowt.org>2003-09-10 19:53:37 +0000
commitfbfbe569fa50e509d25b46b4ebfdc36104bba287 (patch)
tree746aad1170679c334a65ae465d8bcedf91909052 /gcc/testsuite/gcc.c-torture
parentdc4482c413ce17884410168f2a63613d23c83da2 (diff)
* gimplify.c (gimplify_compound_lval): Treat REALPART_EXPR and
IMAGPART_EXPR the same as COMPONENT_REF. * tree-simple.c (is_gimple_addr_expr_arg): Ditto. (is_gimple_lvalue): Remove REALPART_EXPR and IMAGPART_EXPR. testsuite * gcc.c-torture/execute/20030910-1.c: New test. * gcc.g-torture/compile/20030910-1.c: New test. git-svn-id: https://gcc.gnu.org/svn/gcc/branches/tree-ssa-20020619-branch@71279 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite/gcc.c-torture')
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20030910-1.c11
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/20030910-1.c13
2 files changed, 24 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.c-torture/compile/20030910-1.c b/gcc/testsuite/gcc.c-torture/compile/20030910-1.c
new file mode 100644
index 00000000000..9fad109208c
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/20030910-1.c
@@ -0,0 +1,11 @@
+/* The gimplifier was getting confused when taking the real or
+ imaginary component of a complex rvalue. */
+
+void test()
+{
+ __complex double dc;
+ double d;
+
+ d = __real (dc * dc);
+}
+
diff --git a/gcc/testsuite/gcc.c-torture/execute/20030910-1.c b/gcc/testsuite/gcc.c-torture/execute/20030910-1.c
new file mode 100644
index 00000000000..6c849134a9b
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/20030910-1.c
@@ -0,0 +1,13 @@
+/* The gimplifier was inserting unwanted temporaries for REALPART_EXPR
+ nodes. These need to be treated like a COMPONENT_REF so their address can
+ be taken. */
+
+int main()
+{
+ __complex double dc;
+ double *dp = &(__real dc);
+ *dp = 3.14;
+ if ((__real dc) != 3.14) abort();
+ exit (0);
+}
+