diff options
author | Michael Meissner <meissner@gcc.gnu.org> | 2011-03-29 23:35:40 +0000 |
---|---|---|
committer | Michael Meissner <meissner@gcc.gnu.org> | 2011-03-29 23:35:40 +0000 |
commit | 34709a5a4e17b83127ae068d968222db02002db2 (patch) | |
tree | baf81c8fa6ec3caa7c8a967effd5be32a41583ff /gcc | |
parent | 633c9126383d9d16bdc4962a15a2b13c83a3317b (diff) | |
download | gcc-34709a5a4e17b83127ae068d968222db02002db2.zip gcc-34709a5a4e17b83127ae068d968222db02002db2.tar.gz gcc-34709a5a4e17b83127ae068d968222db02002db2.tar.bz2 |
Merge up to 171704
From-SVN: r171707
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/config/rs6000/rs6000-c.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/torture/va-arg-25.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/powerpc/pr48226.c | 14 |
3 files changed, 20 insertions, 1 deletions
diff --git a/gcc/config/rs6000/rs6000-c.c b/gcc/config/rs6000/rs6000-c.c index 3f4f90b..c1683bc 100644 --- a/gcc/config/rs6000/rs6000-c.c +++ b/gcc/config/rs6000/rs6000-c.c @@ -182,7 +182,10 @@ rs6000_macro_to_expand (cpp_reader *pfile, const cpp_token *tok) expand_this = C_CPP_HASHNODE (__vector_keyword); expand_bool_pixel = __bool_keyword; } - else if (ident) + /* The boost libraries have code with Iterator::vector vector in it. If + we allow the normal handling, this module will be called recursively, + and the vector will be skipped.; */ + else if (ident && (ident != C_CPP_HASHNODE (__vector_keyword))) { enum rid rid_code = (enum rid)(ident->rid_code); if (ident->type == NT_MACRO) diff --git a/gcc/testsuite/gcc.dg/torture/va-arg-25.c b/gcc/testsuite/gcc.dg/torture/va-arg-25.c index 8496460..8c0da54 100644 --- a/gcc/testsuite/gcc.dg/torture/va-arg-25.c +++ b/gcc/testsuite/gcc.dg/torture/va-arg-25.c @@ -3,6 +3,8 @@ /* { dg-do run } */ /* { dg-options "-msse" { target { i?86-*-* x86_64-*-* } } } */ /* { dg-require-effective-target sse_runtime { target { i?86-*-* x86_64-*-* } } } */ +/* { dg-options "-mabi=altivec -maltivec" { target { powerpc-*-* powerpc64-*-* } } } */ +/* { dg-require-effective-target vmx_hw { target { powerpc-*-* powerpc64--*-* } } } */ #include <stdarg.h> #include <stdlib.h> diff --git a/gcc/testsuite/gcc.target/powerpc/pr48226.c b/gcc/testsuite/gcc.target/powerpc/pr48226.c new file mode 100644 index 0000000..a436f1d --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/pr48226.c @@ -0,0 +1,14 @@ +/* { dg-do compile } */ +/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ +/* { dg-require-effective-target powerpc_vsx_ok } */ +/* { dg-options "-O3 -mcpu=power7" } */ + +/* The bug shows up if you compile with -maltivec or -mcpu=power7, due to one + of the vector's being eliminated due to rs6000_macro_to_expand being called + recursively. */ + +struct vector { + float v[4]; +}; + +struct vector vector = { 1.0, 2.0, 3.0, 4.0 }; |