diff options
author | Jakub Jelinek <jakub@redhat.com> | 2009-03-28 18:24:41 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2009-03-28 18:24:41 +0100 |
commit | b3bf8855c071b86fb3403f0d3e4d415702cb07ea (patch) | |
tree | ee76bfcacbf4d438e1896864575f9df7d78a0683 /gcc | |
parent | 574872ff83ca439f589a9f98d8076bdb2b8d91d6 (diff) | |
download | gcc-b3bf8855c071b86fb3403f0d3e4d415702cb07ea.zip gcc-b3bf8855c071b86fb3403f0d3e4d415702cb07ea.tar.gz gcc-b3bf8855c071b86fb3403f0d3e4d415702cb07ea.tar.bz2 |
rs6000-c.c (rs6000_macro_to_expand): If macro following vector keyword has expansion starting with pixel or bool...
* config/rs6000/rs6000-c.c (rs6000_macro_to_expand): If macro
following vector keyword has expansion starting with pixel or bool
keyword, expand vector to __vector and pixel or bool to __pixel or
__bool.
* gcc.target/powerpc/altivec-28.c: New test.
From-SVN: r145199
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000-c.c | 14 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/powerpc/altivec-28.c | 16 |
4 files changed, 36 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 012e0a3..4dda512 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 2009-03-28 Jakub Jelinek <jakub@redhat.com> + * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): If macro + following vector keyword has expansion starting with pixel or bool + keyword, expand vector to __vector and pixel or bool to __pixel or + __bool. + PR c++/39554 * opts.c (warning_disallowed_functions, warn_disallowed_functions, warn_if_disallowed_function_p): Removed. diff --git a/gcc/config/rs6000/rs6000-c.c b/gcc/config/rs6000/rs6000-c.c index f968b2f..3aa1714 100644 --- a/gcc/config/rs6000/rs6000-c.c +++ b/gcc/config/rs6000/rs6000-c.c @@ -188,7 +188,19 @@ rs6000_macro_to_expand (cpp_reader *pfile, const cpp_token *tok) tok = cpp_peek_token (pfile, idx++); while (tok->type == CPP_PADDING); ident = altivec_categorize_keyword (tok); - if (ident) + if (ident == C_CPP_HASHNODE (__pixel_keyword)) + { + expand_this = C_CPP_HASHNODE (__vector_keyword); + expand_bool_pixel = __pixel_keyword; + rid_code = RID_MAX; + } + else if (ident == C_CPP_HASHNODE (__bool_keyword)) + { + expand_this = C_CPP_HASHNODE (__vector_keyword); + expand_bool_pixel = __bool_keyword; + rid_code = RID_MAX; + } + else if (ident) rid_code = (enum rid)(ident->rid_code); } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 9a6d50a..4f7b111 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,7 @@ 2009-03-28 Jakub Jelinek <jakub@redhat.com> + * gcc.target/powerpc/altivec-28.c: New test. + PR c++/39554 * gcc.dg/wdisallowed-functions-1.c: Removed. * gcc.dg/wdisallowed-functions-2.c: Removed. diff --git a/gcc/testsuite/gcc.target/powerpc/altivec-28.c b/gcc/testsuite/gcc.target/powerpc/altivec-28.c new file mode 100644 index 0000000..db6c25a --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/altivec-28.c @@ -0,0 +1,16 @@ +/* { dg-do compile { target powerpc*-*-* } } */ +/* { dg-require-effective-target powerpc_altivec_ok } */ +/* { dg-options "-maltivec" } */ + +#define B bool +#define P pixel +#define I int +#define BI bool int +#define PI pixel int + +vector B int i; +vector P int j; +vector B I k; +vector P I l; +vector BI m; +vector PI n; |