aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAndrew Pinski <pinskia@physics.uc.edu>2005-07-08 18:05:04 +0000
committerAndrew Pinski <pinskia@gcc.gnu.org>2005-07-08 11:05:04 -0700
commitd5c77941577bbb6ace7a8e13dfca2c3b61a4ded9 (patch)
tree7edc035a3eacb5bdb81a0175686988f2f0a128b9 /gcc
parent08a3c5cdef945fbf42de92d347dc51cc98b4b007 (diff)
downloadgcc-d5c77941577bbb6ace7a8e13dfca2c3b61a4ded9.zip
gcc-d5c77941577bbb6ace7a8e13dfca2c3b61a4ded9.tar.gz
gcc-d5c77941577bbb6ace7a8e13dfca2c3b61a4ded9.tar.bz2
re PR tree-optimization/22356 (mis-match types in cplxlower)
2005-07-08 Andrew Pinski <pinskia@physics.uc.edu> PR tree-opt/22356 * testsuite/gcc.dg/pr22356-1.c: New test. 2005-07-08 Andrew Pinski <pinskia@physics.uc.edu> PR tree-opt/22356 * tree-complex.c (expand_complex_libcall): Produce REALPART_EXPR/IMAGPART_EXPR with the correct type. From-SVN: r101781
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr22356-1.c11
-rw-r--r--gcc/tree-complex.c1
4 files changed, 23 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b4ae5cd..88c127f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2005-07-08 Andrew Pinski <pinskia@physics.uc.edu>
+
+ PR tree-opt/22356
+ * tree-complex.c (expand_complex_libcall): Produce
+ REALPART_EXPR/IMAGPART_EXPR with the correct type.
+
2005-07-08 Kenneth Zadeck <zadeck@naturalbridge.com>
* bitmap.c (bitmap_and, bitmap_and_into, bitmap_and_compl,
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 8bfd32b..ac82940 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2005-07-08 Andrew Pinski <pinskia@physics.uc.edu>
+
+ PR tree-opt/22356
+ * testsuite/gcc.dg/pr22356-1.c: New test.
+
2005-07-08 Nathan Sidwell <nathan@codesourcery.com>
PR c++/21799
diff --git a/gcc/testsuite/gcc.dg/pr22356-1.c b/gcc/testsuite/gcc.dg/pr22356-1.c
new file mode 100644
index 0000000..118b0b2
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr22356-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -std=gnu99" } */
+typedef _Complex float GFC_COMPLEX_4;
+void product_c4 (GFC_COMPLEX_4 *src, GFC_COMPLEX_4 *dest, int len)
+{
+ int n;
+ GFC_COMPLEX_4 result;
+ for (n = 0; n < len; n++, src += 1)
+ result *= *src;
+ *dest = result;
+}
diff --git a/gcc/tree-complex.c b/gcc/tree-complex.c
index e32dd23..21e9245 100644
--- a/gcc/tree-complex.c
+++ b/gcc/tree-complex.c
@@ -833,6 +833,7 @@ expand_complex_libcall (block_stmt_iterator *bsi, tree ar, tree ai,
if (in_ssa_p)
{
tree lhs = TREE_OPERAND (stmt, 0);
+ type = TREE_TYPE (type);
update_complex_components (bsi, stmt,
build1 (REALPART_EXPR, type, lhs),
build1 (IMAGPART_EXPR, type, lhs));