From fc3fdf0f2196e805a3a43ccb73595c33673670f3 Mon Sep 17 00:00:00 2001 From: Patrick Palka Date: Thu, 27 May 2021 14:25:33 -0400 Subject: c++: parameter pack inside static_assert [PR99893] Here, we're not finding the parameter pack inside the static_assert because STATIC_ASSERT trees are tcc_exceptional, and we weren't explicitly walking them in cp_walk_subtrees. PR c++/99893 gcc/cp/ChangeLog: * tree.c (cp_walk_subtrees) : New case. gcc/testsuite/ChangeLog: * g++.dg/cpp0x/static_assert17.C: New test. --- gcc/cp/tree.c | 5 +++++ gcc/testsuite/g++.dg/cpp0x/static_assert17.C | 9 +++++++++ 2 files changed, 14 insertions(+) create mode 100644 gcc/testsuite/g++.dg/cpp0x/static_assert17.C (limited to 'gcc') diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c index 372d89f..fec5afa 100644 --- a/gcc/cp/tree.c +++ b/gcc/cp/tree.c @@ -5446,6 +5446,11 @@ cp_walk_subtrees (tree *tp, int *walk_subtrees_p, walk_tree_fn func, } break; + case STATIC_ASSERT: + WALK_SUBTREE (STATIC_ASSERT_CONDITION (*tp)); + WALK_SUBTREE (STATIC_ASSERT_MESSAGE (*tp)); + break; + default: return NULL_TREE; } diff --git a/gcc/testsuite/g++.dg/cpp0x/static_assert17.C b/gcc/testsuite/g++.dg/cpp0x/static_assert17.C new file mode 100644 index 0000000..28cbebe --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/static_assert17.C @@ -0,0 +1,9 @@ +// PR c++/99893 +// { dg-do compile { target c++11 } } + +void f(...); + +template +void g() { + f([] { static_assert(Ts::value, ""); }...); +} -- cgit v1.1