diff options
author | Jason Merrill <jason@redhat.com> | 2007-09-27 14:54:06 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2007-09-27 14:54:06 -0400 |
commit | 533007c1e9280941228e1a499cf5747d22d2b7ee (patch) | |
tree | 4ac25a48f9d86a211ad174f1353124a03a37abed /gcc | |
parent | 74687efe94ad01d8af1f28e607bbeba0d80b6d90 (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/decl2.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/ext/tmplattr6.C | 12 |
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>(); +} |