]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR c++/54988 (fpmath=sse target pragma causes inlining failure because of target...
authorJakub Jelinek <jakub@redhat.com>
Tue, 23 Oct 2012 16:55:56 +0000 (18:55 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Tue, 23 Oct 2012 16:55:56 +0000 (18:55 +0200)
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

gcc/ChangeLog
gcc/cp/decl2.c
gcc/testsuite/ChangeLog
gcc/testsuite/c-c++-common/pr54988.c [new file with mode: 0644]

index 0a9707a76a7026f0059cc736e70966d6b9407ea6..aa619b7c3c25a526fd29588deecfe7375174a952 100644 (file)
@@ -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.
index 688a72332cec582910e9f76708f63afd92b2b4db..8657712916aede9e5a5e0111d3de5545c49893b5 100644 (file)
@@ -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);
index ddfef9753f192412eea9f19560a57b7e7ee61391..76f0f423bb9a40bd048b01e987908b57272b8643 100644 (file)
@@ -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 (file)
index 0000000..59406d6
--- /dev/null
@@ -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);
+}