aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authoruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>2004-11-23 16:20:51 +0000
committeruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>2004-11-23 16:20:51 +0000
commit8974fa5f28ac3a18e1574844a12fbbfe8d2311ee (patch)
treea026e9834ff08313a758c881dc80acf50849776b /gcc
parent2754fb1fb78c91e7ddb2f55899c7aebccfae6c0a (diff)
rtl-optimization/18614
* simplify-rtx.c (simplify_binary_operation): Do not simplify inner elements of constant arguments of VEC_CONCAT insn. testsuite: * gcc.dg/pr18614-1.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@91094 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/simplify-rtx.c1
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.dg/pr18614-1.c15
4 files changed, 27 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 1e5b3a647a2..3342ad1018d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2004-11-23 Uros Bizjak <uros@kss-loka.si>
+
+ PR rtl-optimization/18614
+ * simplify-rtx.c (simplify_binary_operation): Do not
+ simplify inner elements of constant arguments of
+ VEC_CONCAT insn.
+
2004-11-23 Eric Botcazou <ebotcazou@libertysurf.fr>
* gthr-solaris.h (__gthread_recursive_mutex_init_function): Use
diff --git a/gcc/simplify-rtx.c b/gcc/simplify-rtx.c
index a9d4ba3e5d2..ac896ab27ab 100644
--- a/gcc/simplify-rtx.c
+++ b/gcc/simplify-rtx.c
@@ -1185,6 +1185,7 @@ simplify_binary_operation (enum rtx_code code, enum machine_mode mode,
trueop1 = avoid_constant_pool_reference (op1);
if (VECTOR_MODE_P (mode)
+ && code != VEC_CONCAT
&& GET_CODE (trueop0) == CONST_VECTOR
&& GET_CODE (trueop1) == CONST_VECTOR)
{
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 605cad3d588..91a04a829f0 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2004-11-23 Uros Bizjak <uros@kss-loka.si>
+
+ * gcc.dg/pr18614-1.c: New test.
+
2004-11-23 Eric Botcazou <ebotcazou@libertysurf.fr>
* gcc.dg/setjmp-2.c: New test.
diff --git a/gcc/testsuite/gcc.dg/pr18614-1.c b/gcc/testsuite/gcc.dg/pr18614-1.c
new file mode 100644
index 00000000000..db1870cb733
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr18614-1.c
@@ -0,0 +1,15 @@
+/* PR rtl-optimization/18614 */
+/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
+/* { dg-options "-O2 -msse2" } */
+
+typedef double v2df __attribute__ ((vector_size (16)));
+
+v2df foo (void)
+{
+ v2df yd = { 1.0, 4.0 };
+ v2df xd;
+
+ xd = __builtin_ia32_cvtps2pd (__builtin_ia32_rsqrtps
+ (__builtin_ia32_cvtpd2ps (yd)));
+ return xd;
+}