aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDevang Patel <dpatel@apple.com>2005-10-04 13:09:56 -0700
committerDevang Patel <dpatel@gcc.gnu.org>2005-10-04 13:09:56 -0700
commita04deb83faf6ea6a12a72c39d7b3b3c12c864f8e (patch)
tree45f61412d75b89045716a7f4583e6ccf5c4580f4 /gcc
parent578578a5abd07795cd396b3c04db001f677d79f0 (diff)
downloadgcc-a04deb83faf6ea6a12a72c39d7b3b3c12c864f8e.zip
gcc-a04deb83faf6ea6a12a72c39d7b3b3c12c864f8e.tar.gz
gcc-a04deb83faf6ea6a12a72c39d7b3b3c12c864f8e.tar.bz2
c-common.c (vector_types_convertible_p): Check TYPE_PRECISION for real types.
* c-common.c (vector_types_convertible_p): Check TYPE_PRECISION for real types. * gcc.dg/i386-sse-vect-types.c: New. From-SVN: r104958
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/c-common.c2
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.dg/i386-sse-vect-types.c20
4 files changed, 31 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a97d43c0..9395d52 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2005-10-04 Devang Patel <dpatel@apple.com>
+
+ * c-common.c (vector_types_convertible_p): Check TYPE_PRECISION for
+ real types.
+
2005-10-04 Steve Ellcey <sje@cup.hp.com>
* tree-vect-transform.c (vect_create_epilog_for_reduction):
diff --git a/gcc/c-common.c b/gcc/c-common.c
index 4b1f9e7..4114fbf 100644
--- a/gcc/c-common.c
+++ b/gcc/c-common.c
@@ -972,6 +972,8 @@ vector_types_convertible_p (tree t1, tree t2)
return targetm.vector_opaque_p (t1)
|| targetm.vector_opaque_p (t2)
|| (tree_int_cst_equal (TYPE_SIZE (t1), TYPE_SIZE (t2))
+ && (TREE_CODE (t1) != REAL_TYPE ||
+ TYPE_PRECISION (t1) == TYPE_PRECISION (t2))
&& INTEGRAL_TYPE_P (TREE_TYPE (t1))
== INTEGRAL_TYPE_P (TREE_TYPE (t2)));
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index a397ea9..bc53511 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2005-10-04 Devang Patel <dpatel@apple.com>
+
+ * gcc.dg/i386-sse-vect-types.c: New.
+
2005-10-04 Ian Lance Taylor <ian@airs.com>
PR preprocessor/13726
diff --git a/gcc/testsuite/gcc.dg/i386-sse-vect-types.c b/gcc/testsuite/gcc.dg/i386-sse-vect-types.c
new file mode 100644
index 0000000..10a544d
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/i386-sse-vect-types.c
@@ -0,0 +1,20 @@
+/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
+/* { dg-options "-O0 -msse2" } */
+
+/* Test the intrinsics without optimization. All of them are
+ defined as inline functions in mmintrin.h that reference the proper
+ builtin functions. Defining away "static" and "__inline" results in
+ all of them being compiled as proper functions. */
+
+#define static
+#define __inline
+
+#include <xmmintrin.h>
+
+__m128d foo1(__m128d z, __m128d a, int N) {
+ int i;
+ for (i=0; i<N; i++) {
+ a = _mm_add_ps(z, a); /* { dg-error "incompatible type" } */
+ }
+ return a;
+}