diff options
author | Marek Polacek <polacek@redhat.com> | 2017-03-10 15:36:00 +0000 |
---|---|---|
committer | Marek Polacek <mpolacek@gcc.gnu.org> | 2017-03-10 15:36:00 +0000 |
commit | 455d833cd8ea14eec356e0f85a3a7e173592ece8 (patch) | |
tree | 7034dca89e5d888387c22712ecbbb7b3e0cae76e /gcc | |
parent | e260b0a7dda804cd2bd0beee477d47ce9c01d4c0 (diff) | |
download | gcc-455d833cd8ea14eec356e0f85a3a7e173592ece8.zip gcc-455d833cd8ea14eec356e0f85a3a7e173592ece8.tar.gz gcc-455d833cd8ea14eec356e0f85a3a7e173592ece8.tar.bz2 |
re PR c++/79967 (ICE on non-type template argument declared noreturn)
PR c++/79967
* decl.c (grokdeclarator): Check ATTRLIST before dereferencing it.
* g++.dg/cpp0x/gen-attrs-63.C: New test.
From-SVN: r246039
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/decl.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/gen-attrs-63.C | 12 |
4 files changed, 24 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index d3871aa..69b49e6 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2017-03-10 Marek Polacek <polacek@redhat.com> + + PR c++/79967 + * decl.c (grokdeclarator): Check ATTRLIST before dereferencing it. + 2017-03-10 Jakub Jelinek <jakub@redhat.com> PR c++/79899 diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 2a97ffc..bf6f0eb 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -11402,7 +11402,8 @@ grokdeclarator (const cp_declarator *declarator, if (declarator && declarator->kind == cdk_id - && declarator->std_attributes) + && declarator->std_attributes + && attrlist != NULL) /* [dcl.meaning]/1: The optional attribute-specifier-seq following a declarator-id appertains to the entity that is declared. */ *attrlist = chainon (*attrlist, declarator->std_attributes); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a7dae3d..bd5919f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2017-03-10 Marek Polacek <polacek@redhat.com> + + PR c++/79967 + * g++.dg/cpp0x/gen-attrs-63.C: New test. + 2017-03-10 Jakub Jelinek <jakub@redhat.com> PR c++/79899 diff --git a/gcc/testsuite/g++.dg/cpp0x/gen-attrs-63.C b/gcc/testsuite/g++.dg/cpp0x/gen-attrs-63.C new file mode 100644 index 0000000..05f53e3 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/gen-attrs-63.C @@ -0,0 +1,12 @@ +// PR c++/79967 +// { dg-do compile { target c++11 } } + +template <void f [[noreturn]]()> +struct A +{ + int g () { f (); return 0; } +}; + +void f (); + +void g (A<f> a) { a.g (); } |