aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Elliston <bje@au.ibm.com>2004-08-02 01:05:47 +0000
committerBen Elliston <bje@gcc.gnu.org>2004-08-02 11:05:47 +1000
commita4e41fdeecdeadee4f4b221ef38ab38122d1fc18 (patch)
tree1ba093c88f82048925248629aabec927aad8d59e
parent6a3bc5b1d0c8cb150c41aae2ebfdbfb2401542d2 (diff)
downloadgcc-a4e41fdeecdeadee4f4b221ef38ab38122d1fc18.zip
gcc-a4e41fdeecdeadee4f4b221ef38ab38122d1fc18.tar.gz
gcc-a4e41fdeecdeadee4f4b221ef38ab38122d1fc18.tar.bz2
Patch for PR target/16155.
2004-08-02 Ben Elliston <bje@au.ibm.com> PR target/16155 * config/rs6000/altivec.h: Replace typeof with __typeof__. [testsuite] 2004-08-02 Ben Elliston <bje@au.ibm.com> * gcc.dg/pr16155.c: New test. From-SVN: r85418
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/rs6000/altivec.h36
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr16155.c17
4 files changed, 45 insertions, 18 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 24af347..52e58e4 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2004-08-02 Ben Elliston <bje@au.ibm.com>
+
+ PR target/16155
+ * config/rs6000/altivec.h: Replace typeof with __typeof__.
+
2004-08-01 Richard Henderson <rth@redhat.com>
* expr.c (expand_expr_real_1) <normal_inner_ref>: Fix crash with
diff --git a/gcc/config/rs6000/altivec.h b/gcc/config/rs6000/altivec.h
index 7d9e62f..a103f10 100644
--- a/gcc/config/rs6000/altivec.h
+++ b/gcc/config/rs6000/altivec.h
@@ -311,7 +311,7 @@ struct __vec_step_help<vector float>
static const int _S_elem = 4;
};
-#define vec_step(t) __vec_step_help<typeof(t)>::_S_elem
+#define vec_step(t) __vec_step_help<__typeof__(t)>::_S_elem
/* vec_abs */
@@ -8313,31 +8313,31 @@ vec_any_out (vector float a1, vector float a2)
/* Helper macros. */
#define __un_args_eq(xtype, x) \
- __builtin_types_compatible_p (xtype, typeof (x))
+ __builtin_types_compatible_p (xtype, __typeof__ (x))
#define __bin_args_eq(xtype, x, ytype, y) \
- (__builtin_types_compatible_p (xtype, typeof (x)) \
- && __builtin_types_compatible_p (ytype, typeof (y)))
+ (__builtin_types_compatible_p (xtype, __typeof__ (x)) \
+ && __builtin_types_compatible_p (ytype, __typeof__ (y)))
#define __tern_args_eq(xtype, x, ytype, y, ztype, z) \
- (__builtin_types_compatible_p (xtype, typeof (x)) \
- && __builtin_types_compatible_p (ytype, typeof (y)) \
- && __builtin_types_compatible_p (ztype, typeof (z)))
+ (__builtin_types_compatible_p (xtype, __typeof__ (x)) \
+ && __builtin_types_compatible_p (ytype, __typeof__ (y)) \
+ && __builtin_types_compatible_p (ztype, __typeof__ (z)))
#define __ch(x, y, z) __builtin_choose_expr (x, y, z)
#define vec_step(t) \
- __ch (__builtin_types_compatible_p (typeof (t), vector signed int), 4, \
- __ch (__builtin_types_compatible_p (typeof (t), vector unsigned int), 4, \
- __ch (__builtin_types_compatible_p (typeof (t), vector bool int), 4, \
- __ch (__builtin_types_compatible_p (typeof (t), vector signed short), 8, \
- __ch (__builtin_types_compatible_p (typeof (t), vector unsigned short), 8, \
- __ch (__builtin_types_compatible_p (typeof (t), vector bool short), 8, \
- __ch (__builtin_types_compatible_p (typeof (t), vector pixel), 8, \
- __ch (__builtin_types_compatible_p (typeof (t), vector signed char), 16, \
- __ch (__builtin_types_compatible_p (typeof (t), vector unsigned char), 16, \
- __ch (__builtin_types_compatible_p (typeof (t), vector bool char), 16, \
- __ch (__builtin_types_compatible_p (typeof (t), vector float), 4, \
+ __ch (__builtin_types_compatible_p (__typeof__ (t), vector signed int), 4, \
+ __ch (__builtin_types_compatible_p (__typeof__ (t), vector unsigned int), 4, \
+ __ch (__builtin_types_compatible_p (__typeof__ (t), vector bool int), 4, \
+ __ch (__builtin_types_compatible_p (__typeof__ (t), vector signed short), 8, \
+ __ch (__builtin_types_compatible_p (__typeof__ (t), vector unsigned short), 8, \
+ __ch (__builtin_types_compatible_p (__typeof__ (t), vector bool short), 8, \
+ __ch (__builtin_types_compatible_p (__typeof__ (t), vector pixel), 8, \
+ __ch (__builtin_types_compatible_p (__typeof__ (t), vector signed char), 16, \
+ __ch (__builtin_types_compatible_p (__typeof__ (t), vector unsigned char), 16, \
+ __ch (__builtin_types_compatible_p (__typeof__ (t), vector bool char), 16, \
+ __ch (__builtin_types_compatible_p (__typeof__ (t), vector float), 4, \
__builtin_altivec_compiletime_error ("vec_step"))))))))))))
#define vec_abs(a) \
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 28d487c..69ef9dc 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2004-08-02 Ben Elliston <bje@au.ibm.com>
+
+ PR target/16155
+ * gcc.dg/pr16155.c: New test.
+
2004-07-31 Joseph S. Myers <jsm@polyomino.org.uk>
* gcc.dg/redecl-2.c: New test.
diff --git a/gcc/testsuite/gcc.dg/pr16155.c b/gcc/testsuite/gcc.dg/pr16155.c
new file mode 100644
index 0000000..64df264
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr16155.c
@@ -0,0 +1,17 @@
+/* { dg-do compile { target powerpc*-*-* } } */
+/* { dg-options "-maltivec -ansi" } */
+
+/* PR 16155
+ * Compilation of a simple altivec test program fails if the -ansi flag is
+ * given to gcc, when compiling with -maltivec.
+ */
+
+#include <altivec.h>
+
+void foo(void)
+{
+ vector unsigned short a, b;
+ a = vec_splat(b, 0);
+}
+
+/* { dg-bogus "parse error before \"typeof\"" "-maltivec -mansi" { target powerpc*-*-* } 0 } */