diff options
author | Jakub Jelinek <jakub@redhat.com> | 2012-10-23 18:55:56 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2012-10-23 18:55:56 +0200 |
commit | 0065c7ebdf0c336da82203cf876c09682dbc8b9b (patch) | |
tree | 87edab2218262e4b2334682a97b0ab395b508804 | |
parent | 4b671e64d4d84a4090ce484e638c6032ed5ba17a (diff) | |
download | gcc-0065c7ebdf0c336da82203cf876c09682dbc8b9b.zip gcc-0065c7ebdf0c336da82203cf876c09682dbc8b9b.tar.gz gcc-0065c7ebdf0c336da82203cf876c09682dbc8b9b.tar.bz2 |
re PR c++/54988 (fpmath=sse target pragma causes inlining failure because of target specific option mismatch)
PR c++/54988
* decl2.c (cplus_decl_attributes): Don't return early
if attributes is NULL.
* c-c++-common/pr54988.c: New test.
From-SVN: r192722
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/decl2.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/c-c++-common/pr54988.c | 20 |
4 files changed, 32 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0a9707a..aa619b7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2012-10-23 Jakub Jelinek <jakub@redhat.com> + + PR c++/54988 + * decl2.c (cplus_decl_attributes): Don't return early + if attributes is NULL. + 2012-10-23 Michael Matz <matz@suse.de> * tree-ssa-operands.h (struct def_optype_d, def_optype_p): Remove. diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index 688a723..8657712 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -1309,8 +1309,7 @@ void cplus_decl_attributes (tree *decl, tree attributes, int flags) { if (*decl == NULL_TREE || *decl == void_type_node - || *decl == error_mark_node - || attributes == NULL_TREE) + || *decl == error_mark_node) return; if (processing_template_decl) @@ -1319,8 +1318,6 @@ cplus_decl_attributes (tree *decl, tree attributes, int flags) return; save_template_attributes (&attributes, decl); - if (attributes == NULL_TREE) - return; } cp_check_const_attributes (attributes); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ddfef97..76f0f42 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-10-23 Jakub Jelinek <jakub@redhat.com> + + PR c++/54988 + * c-c++-common/pr54988.c: New test. + 2012-10-23 Jan Hubicka <jh@suse.cz> * gcc.dg/tree-prof/peel-1.c: New testcase. diff --git a/gcc/testsuite/c-c++-common/pr54988.c b/gcc/testsuite/c-c++-common/pr54988.c new file mode 100644 index 0000000..59406d6 --- /dev/null +++ b/gcc/testsuite/c-c++-common/pr54988.c @@ -0,0 +1,20 @@ +/* PR c++/54988 */ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ +/* { dg-additional-options "-msse2" { target { i?86-*-* x86_64-*-* } } } */ + +#if defined(__i386__) || defined(__x86_64__) +#pragma GCC target "fpmath=sse" +#endif + +static inline __attribute__ ((always_inline)) int +foo (int x) +{ + return x; +} + +int +bar (int x) +{ + return foo (x); +} |