]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR c++/66748 (Crash with abi_tag attribute)
authorMarek Polacek <polacek@redhat.com>
Thu, 16 Jul 2015 13:33:12 +0000 (13:33 +0000)
committerMarek Polacek <mpolacek@gcc.gnu.org>
Thu, 16 Jul 2015 13:33:12 +0000 (13:33 +0000)
PR c++/66748
* tree.c (handle_abi_tag_attribute): Check for CLASS_TYPE_P before
accessing TYPE_LANG_SPECIFIC node.

* g++.dg/abi/abi-tag15.C: New test.

From-SVN: r225878

gcc/cp/ChangeLog
gcc/cp/tree.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/abi/abi-tag15.C [new file with mode: 0644]

index 0f1499d4f29ed4aa3a6c8e8a45391f16b10241a5..213e76dc1b2d27a4f784ece0661dd53ac1909b6b 100644 (file)
@@ -1,3 +1,12 @@
+2015-07-16  Marek Polacek  <polacek@redhat.com>
+
+       2015-07-08  Marek Polacek  <polacek@redhat.com>
+       Backported from mainline
+
+       PR c++/66748
+       * tree.c (handle_abi_tag_attribute): Check for CLASS_TYPE_P before
+       accessing TYPE_LANG_SPECIFIC node.
+
 2015-06-26  Release Manager
 
        * GCC 4.9.3 released.
index 11c352143d45c91423020c5400f539ed52203735..0560781bae22470e074894d5596b00442720cf6a 100644 (file)
@@ -3375,13 +3375,15 @@ handle_abi_tag_attribute (tree* node, tree name, tree args,
                 name, *node);
          goto fail;
        }
-      else if (CLASSTYPE_TEMPLATE_INSTANTIATION (*node))
+      else if (CLASS_TYPE_P (*node)
+              && CLASSTYPE_TEMPLATE_INSTANTIATION (*node))
        {
          warning (OPT_Wattributes, "ignoring %qE attribute applied to "
                   "template instantiation %qT", name, *node);
          goto fail;
        }
-      else if (CLASSTYPE_TEMPLATE_SPECIALIZATION (*node))
+      else if (CLASS_TYPE_P (*node)
+              && CLASSTYPE_TEMPLATE_SPECIALIZATION (*node))
        {
          warning (OPT_Wattributes, "ignoring %qE attribute applied to "
                   "template specialization %qT", name, *node);
index adf39131ba5ff4f27965eb1a8aac51745d623a47..043b4b72821180f983011eaee2262982f66ea860 100644 (file)
@@ -1,3 +1,11 @@
+2015-07-16  Marek Polacek  <polacek@redhat.com>
+
+       2015-07-08  Marek Polacek  <polacek@redhat.com>
+       Backported from mainline
+
+       PR c++/66748
+       * g++.dg/abi/abi-tag15.C: New test.
+
 2015-07-10  Mantas Mikaitis  <Mantas.Mikaitis@arm.com>
 
        * gcc.target/arm/macro_defs0.c: New test.
diff --git a/gcc/testsuite/g++.dg/abi/abi-tag15.C b/gcc/testsuite/g++.dg/abi/abi-tag15.C
new file mode 100644 (file)
index 0000000..bfda3a2
--- /dev/null
@@ -0,0 +1,3 @@
+// PR c++/66748
+
+enum __attribute__((abi_tag("foo"))) E {}; // { dg-error "redeclaration of" }