From 66ecb160bd92a203c46bd51be288f7c41cc7eeb8 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sat, 28 Mar 2009 17:29:57 +0000 Subject: * 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. git-svn-id: https://gcc.gnu.org/svn/gcc/branches/gcc-4_4-branch@145201 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 5 +++++ gcc/config/rs6000/rs6000-c.c | 14 +++++++++++++- gcc/testsuite/ChangeLog | 2 ++ gcc/testsuite/gcc.target/powerpc/altivec-28.c | 16 ++++++++++++++++ 4 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.target/powerpc/altivec-28.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 96ba28b4615..e21b2ed5209 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 2009-03-28 Jakub Jelinek + * 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 f968b2f1467..3aa17143b67 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 d126040d7a9..625685b02e1 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,7 @@ 2009-03-28 Jakub Jelinek + * 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 00000000000..db6c25ac7e8 --- /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; -- cgit v1.2.3