diff options
author | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-05-29 07:06:35 +0000 |
---|---|---|
committer | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-05-29 07:06:35 +0000 |
commit | fd36071f55a6a2b2fec2cc22784c3a7347bd60f8 (patch) | |
tree | 96dbd86211f5253bdf919bc13d504c90dced6235 | |
parent | de84ad029c2783ada53d07265be2a81710d8eba7 (diff) | |
download | gcc-fd36071f55a6a2b2fec2cc22784c3a7347bd60f8.tar.gz |
PR target/40017
* config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
(altivec_categorize_keyword, init_vector_keywords,
rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
similar to bool.
* gcc.target/powerpc/altivec-types-1.c: Don't expect error for
__vector _Bool.
* gcc.target/powerpc/altivec-30.c: New test.
* gcc.target/powerpc/altivec-31.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@147970 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000-c.c | 8 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/powerpc/altivec-30.c | 32 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/powerpc/altivec-31.c | 29 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/powerpc/altivec-types-1.c | 2 |
6 files changed, 86 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e788ff6e9e0..f368de2bb5f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2009-05-29 Jakub Jelinek <jakub@redhat.com> + + PR target/40017 + * config/rs6000/rs6000-c.c (_Bool_keyword): New variable. + (altivec_categorize_keyword, init_vector_keywords, + rs6000_cpu_cpp_builtins): Define _Bool as conditional macro + similar to bool. + 2009-05-29 Kai Tietz <kai.tietz@onevision.com> * tree.c (handle_dll_attribute): Check if node is diff --git a/gcc/config/rs6000/rs6000-c.c b/gcc/config/rs6000/rs6000-c.c index c7adcdb5e04..33bbd65bff7 100644 --- a/gcc/config/rs6000/rs6000-c.c +++ b/gcc/config/rs6000/rs6000-c.c @@ -91,6 +91,7 @@ static GTY(()) tree __pixel_keyword; static GTY(()) tree pixel_keyword; static GTY(()) tree __bool_keyword; static GTY(()) tree bool_keyword; +static GTY(()) tree _Bool_keyword; /* Preserved across calls. */ static tree expand_bool_pixel; @@ -111,6 +112,9 @@ altivec_categorize_keyword (const cpp_token *tok) if (ident == C_CPP_HASHNODE (bool_keyword)) return C_CPP_HASHNODE (__bool_keyword); + if (ident == C_CPP_HASHNODE (_Bool_keyword)) + return C_CPP_HASHNODE (__bool_keyword); + return ident; } @@ -141,6 +145,9 @@ init_vector_keywords (void) bool_keyword = get_identifier ("bool"); C_CPP_HASHNODE (bool_keyword)->flags |= NODE_CONDITIONAL; + + _Bool_keyword = get_identifier ("_Bool"); + C_CPP_HASHNODE (_Bool_keyword)->flags |= NODE_CONDITIONAL; } /* Called to decide whether a conditional macro should be expanded. @@ -295,6 +302,7 @@ rs6000_cpu_cpp_builtins (cpp_reader *pfile) builtin_define ("vector=vector"); builtin_define ("pixel=pixel"); builtin_define ("bool=bool"); + builtin_define ("_Bool=_Bool"); init_vector_keywords (); /* Enable context-sensitive macros. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b0706c50a87..2c1fc0334f7 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2009-05-29 Jakub Jelinek <jakub@redhat.com> + + PR target/40017 + * gcc.target/powerpc/altivec-types-1.c: Don't expect error for + __vector _Bool. + * gcc.target/powerpc/altivec-30.c: New test. + * gcc.target/powerpc/altivec-31.c: New test. + 2009-05-28 Richard Guenther <rguenther@suse.de> * gcc.dg/tree-ssa/ssa-fre-26.c: New testcase. diff --git a/gcc/testsuite/gcc.target/powerpc/altivec-30.c b/gcc/testsuite/gcc.target/powerpc/altivec-30.c new file mode 100644 index 00000000000..99783191db9 --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/altivec-30.c @@ -0,0 +1,32 @@ +/* { dg-do compile { target powerpc*-*-* } } */ +/* { dg-require-effective-target powerpc_altivec_ok } */ +/* { dg-options "-maltivec" } */ + +#include <stdbool.h> +#include <altivec.h> + +#define f0(type) void x0##type (vector bool type x) { } +f0 (int) + +#define f1(v, type) void x1##type (v bool type x) { } +f1 (vector, int) + +#define f2(b, type) void x2##type (vector b type x) { } +f2 (bool, int) + +#define f3(v, b, type) void x3##type (v b type x) { } +f3 (vector, bool, int) + +#define f4(v, b, type) void x4##type (v type b x) { } +f4 (vector, bool, int) + +#define B bool +#define I int +#define BI bool int +#define VBI vector bool int + +vector bool int a; +vector B int b; +vector B I c; +vector BI d; +VBI e; diff --git a/gcc/testsuite/gcc.target/powerpc/altivec-31.c b/gcc/testsuite/gcc.target/powerpc/altivec-31.c new file mode 100644 index 00000000000..233efe1bebb --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/altivec-31.c @@ -0,0 +1,29 @@ +/* { dg-do compile { target powerpc*-*-* } } */ +/* { dg-require-effective-target powerpc_altivec_ok } */ +/* { dg-options "-maltivec" } */ + +#define f0(type) void x0##type (vector _Bool type x) { } +f0 (int) + +#define f1(v, type) void x1##type (v _Bool type x) { } +f1 (vector, int) + +#define f2(b, type) void x2##type (vector b type x) { } +f2 (_Bool, int) + +#define f3(v, b, type) void x3##type (v b type x) { } +f3 (vector, _Bool, int) + +#define f4(v, b, type) void x4##type (v type b x) { } +f4 (vector, _Bool, int) + +#define B _Bool +#define I int +#define BI _Bool int +#define VBI vector _Bool int + +vector _Bool int a; +vector B int b; +vector B I c; +vector BI d; +VBI e; diff --git a/gcc/testsuite/gcc.target/powerpc/altivec-types-1.c b/gcc/testsuite/gcc.target/powerpc/altivec-types-1.c index d293042d64f..41de95225b3 100644 --- a/gcc/testsuite/gcc.target/powerpc/altivec-types-1.c +++ b/gcc/testsuite/gcc.target/powerpc/altivec-types-1.c @@ -24,6 +24,7 @@ __vector unsigned vuj; __vector signed vsj; __vector __bool vbj; __vector float vf; +__vector _Bool vb; /* These should be rejected as invalid AltiVec types. */ @@ -37,7 +38,6 @@ __vector signed long long int vslli; /* { dg-error "AltiVec types" "" } */ __vector __bool long long int vblli; /* { dg-error "AltiVec types" "" } */ __vector double vd1; /* { dg-error "AltiVec types" "" } */ __vector long double vld; /* { dg-error "AltiVec types" "" } */ -__vector _Bool vb; /* { dg-error "AltiVec types" "" } */ __vector _Complex float vcf; /* { dg-error "AltiVec types" "" } */ __vector _Complex double vcd; /* { dg-error "AltiVec types" "" } */ __vector _Complex long double vcld; /* { dg-error "AltiVec types" "" } */ |