diff options
author | Ben Elliston <bje@au.ibm.com> | 2004-08-02 01:05:47 +0000 |
---|---|---|
committer | Ben Elliston <bje@gcc.gnu.org> | 2004-08-02 11:05:47 +1000 |
commit | a4e41fdeecdeadee4f4b221ef38ab38122d1fc18 (patch) | |
tree | 1ba093c88f82048925248629aabec927aad8d59e | |
parent | 6a3bc5b1d0c8cb150c41aae2ebfdbfb2401542d2 (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/rs6000/altivec.h | 36 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr16155.c | 17 |
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 } */ |