From 071a4e4ee8812eceb1e79d780d9add7d23175eef Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Mon, 25 Jun 2018 19:42:12 +0200 Subject: [PATCH] backport: re PR c++/85140 (ICE with invalid use of alignas) Backported from mainline 2018-04-03 Jakub Jelinek PR c++/85140 * name-lookup.c (handle_namespace_attrs): Return early if attributes is error_mark_node. * g++.dg/cpp0x/gen-attrs-64.C: New test. From-SVN: r262089 --- gcc/cp/ChangeLog | 6 ++++++ gcc/cp/name-lookup.c | 3 +++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/cpp0x/gen-attrs-64.C | 4 ++++ 4 files changed, 18 insertions(+) create mode 100644 gcc/testsuite/g++.dg/cpp0x/gen-attrs-64.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index ccb09daa043e..3078b4a05c53 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,6 +1,12 @@ 2018-06-25 Jakub Jelinek Backported from mainline + 2018-04-03 Jakub Jelinek + + PR c++/85140 + * name-lookup.c (handle_namespace_attrs): Return early if attributes + is error_mark_node. + 2018-03-30 Jakub Jelinek PR c++/84791 diff --git a/gcc/cp/name-lookup.c b/gcc/cp/name-lookup.c index a4a8af22db65..5359eb4ea954 100644 --- a/gcc/cp/name-lookup.c +++ b/gcc/cp/name-lookup.c @@ -3633,6 +3633,9 @@ handle_namespace_attrs (tree ns, tree attributes) tree d; bool saw_vis = false; + if (attributes == error_mark_node) + return false; + for (d = attributes; d; d = TREE_CHAIN (d)) { tree name = get_attribute_name (d); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b6083790bec0..152e04c2234b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,6 +1,11 @@ 2018-06-25 Jakub Jelinek Backported from mainline + 2018-04-03 Jakub Jelinek + + PR c++/85140 + * g++.dg/cpp0x/gen-attrs-64.C: New test. + 2018-03-30 Jakub Jelinek PR c++/84791 diff --git a/gcc/testsuite/g++.dg/cpp0x/gen-attrs-64.C b/gcc/testsuite/g++.dg/cpp0x/gen-attrs-64.C new file mode 100644 index 000000000000..c0d48fc88e96 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/gen-attrs-64.C @@ -0,0 +1,4 @@ +// PR c++/85140 +// { dg-do compile { target c++11 } } + +namespace N alignas() {} // { dg-error "expected" } -- 2.47.2