aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2007-09-27 14:54:06 -0400
committerJason Merrill <jason@gcc.gnu.org>2007-09-27 14:54:06 -0400
commit533007c1e9280941228e1a499cf5747d22d2b7ee (patch)
tree4ac25a48f9d86a211ad174f1353124a03a37abed /gcc
parent74687efe94ad01d8af1f28e607bbeba0d80b6d90 (diff)
downloadgcc-533007c1e9280941228e1a499cf5747d22d2b7ee.zip
gcc-533007c1e9280941228e1a499cf5747d22d2b7ee.tar.gz
gcc-533007c1e9280941228e1a499cf5747d22d2b7ee.tar.bz2
decl2.c (is_late_template_attribute): Don't crash on unknown attribute.
* decl2.c (is_late_template_attribute): Don't crash on unknown attribute. From-SVN: r128844
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/decl2.c4
-rw-r--r--gcc/testsuite/g++.dg/ext/tmplattr6.C12
3 files changed, 21 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index f459c54..a0e259c 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2007-09-27 Jason Merrill <jason@redhat.com>
+
+ * decl2.c (is_late_template_attribute): Don't crash on unknown
+ attribute.
+
2007-09-27 Paolo Carlini <pcarlini@suse.de>
PR c++/33493
diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c
index d581942..c00c979 100644
--- a/gcc/cp/decl2.c
+++ b/gcc/cp/decl2.c
@@ -986,6 +986,10 @@ is_late_template_attribute (tree attr, tree decl)
tree args = TREE_VALUE (attr);
const struct attribute_spec *spec = lookup_attribute_spec (name);
+ if (!spec)
+ /* Unknown attribute. */
+ return false;
+
if (is_attribute_p ("aligned", name)
&& args
&& value_dependent_expression_p (TREE_VALUE (args)))
diff --git a/gcc/testsuite/g++.dg/ext/tmplattr6.C b/gcc/testsuite/g++.dg/ext/tmplattr6.C
new file mode 100644
index 0000000..17f23fe
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/tmplattr6.C
@@ -0,0 +1,12 @@
+// Don't crash on an unknown attribute.
+
+struct foo {
+ template <class T>
+ void __attribute__((leafify)) bar() {} // { dg-warning "ignored" }
+};
+
+void bar(void)
+{
+ foo f;
+ f.bar<int>();
+}