https://gcc.gnu.org/g:c53fce1d43d1629e5f5426efbf4ac1c0ce4c3c84
commit r16-8911-gc53fce1d43d1629e5f5426efbf4ac1c0ce4c3c84 Author: Jakub Jelinek <[email protected]> Date: Thu May 7 15:53:52 2026 +0200 c++: Don't check for consteval-only uses inside of USING_STMT [PR125184] I think a USING_STMT operand shouldn't count as consteval-only use. 2026-05-07 Jakub Jelinek <[email protected]> PR c++/125184 * reflect.cc (check_out_of_consteval_use_r): Don't walk children of USING_STMTs. * g++.dg/reflect/using3.C: New test. Reviewed-by: Jason Merrill <[email protected]> (cherry picked from commit d6fc88f22812cc74ddb36871e01f3d56ef383334) Diff: --- gcc/cp/reflect.cc | 2 ++ gcc/testsuite/g++.dg/reflect/using3.C | 11 +++++++++++ 2 files changed, 13 insertions(+) diff --git a/gcc/cp/reflect.cc b/gcc/cp/reflect.cc index 9bbbd06aa7f1..6aaba7930e24 100644 --- a/gcc/cp/reflect.cc +++ b/gcc/cp/reflect.cc @@ -8717,6 +8717,8 @@ check_out_of_consteval_use_r (tree *tp, int *walk_subtrees, void *pset) || TREE_CODE (t) == INIT_EXPR /* And don't recurse on DECL_EXPRs. */ || TREE_CODE (t) == DECL_EXPR + /* Neither into USING_STMT. */ + || TREE_CODE (t) == USING_STMT /* Blocks can appear in the TREE_VEC operand of OpenMP depend/affinity/map/to/from OMP_CLAUSEs when using iterators. */ || TREE_CODE (t) == BLOCK) diff --git a/gcc/testsuite/g++.dg/reflect/using3.C b/gcc/testsuite/g++.dg/reflect/using3.C new file mode 100644 index 000000000000..03b0b0a5b758 --- /dev/null +++ b/gcc/testsuite/g++.dg/reflect/using3.C @@ -0,0 +1,11 @@ +// PR c++/125184 +// { dg-do compile { target c++26 } } +// { dg-additional-options "-freflection" } + +#include <meta> + +void +foo () +{ + using std::meta::info; +}
