aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2012-10-23 18:55:56 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2012-10-23 18:55:56 +0200
commit0065c7ebdf0c336da82203cf876c09682dbc8b9b (patch)
tree87edab2218262e4b2334682a97b0ab395b508804 /gcc
parent4b671e64d4d84a4090ce484e638c6032ed5ba17a (diff)
downloadgcc-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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/cp/decl2.c5
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/c-c++-common/pr54988.c20
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);
+}