From 879b75b1c7093fb53803ee3e520067019cf34927 Mon Sep 17 00:00:00 2001 From: jakub Date: Thu, 22 Mar 2012 20:25:02 +0000 Subject: [PATCH] PR c++/52671 * decl.c (check_tag_decl): Only use CLASSTYPE_TEMPLATE_INSTANTIATION on CLASS_TYPE_P types. * g++.dg/ext/attrib44.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@185709 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 6 ++++++ gcc/cp/decl.c | 3 ++- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/ext/attrib44.C | 4 ++++ 4 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/g++.dg/ext/attrib44.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 370fd7a..7da7f59 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2012-03-22 Jakub Jelinek + + PR c++/52671 + * decl.c (check_tag_decl): Only use CLASSTYPE_TEMPLATE_INSTANTIATION + on CLASS_TYPE_P types. + 2012-03-20 Jason Merrill * lex.c (init_reswords): Use >= for cxx_dialect test. diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 2b2a551..e664d43 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -4219,7 +4219,8 @@ check_tag_decl (cp_decl_specifier_seq *declspecs) if (declspecs->attributes && warn_attributes) { location_t loc; - if (!CLASSTYPE_TEMPLATE_INSTANTIATION (declared_type)) + if (!CLASS_TYPE_P (declared_type) + || !CLASSTYPE_TEMPLATE_INSTANTIATION (declared_type)) /* For a non-template class, use the name location. */ loc = location_of (declared_type); else diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 0e66883..36bb18b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-03-22 Jakub Jelinek + + PR c++/52671 + * g++.dg/ext/attrib44.C: New test. + 2012-03-22 Jan Hubicka PR middle-end/51737 diff --git a/gcc/testsuite/g++.dg/ext/attrib44.C b/gcc/testsuite/g++.dg/ext/attrib44.C new file mode 100644 index 0000000..ae08191 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/attrib44.C @@ -0,0 +1,4 @@ +// PR c++/52671 +// { dg-do compile } +__attribute__ ((deprecated)) enum E { E0 }; // { dg-warning "attribute ignored in declaration of" } +// { dg-message "must follow the" "" { target *-*-* } 3 } -- 2.7.4