aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2009-03-28 18:24:41 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2009-03-28 18:24:41 +0100
commitb3bf8855c071b86fb3403f0d3e4d415702cb07ea (patch)
treeee76bfcacbf4d438e1896864575f9df7d78a0683 /gcc
parent574872ff83ca439f589a9f98d8076bdb2b8d91d6 (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--gcc/config/rs6000/rs6000-c.c14
-rw-r--r--gcc/testsuite/ChangeLog2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/altivec-28.c16
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;