We only need to predeclare a VLA type if it's wrapped in a pointer type; otherwise gimplify_type_sizes will handle it.
Tested x86_64-pc-linux-gnu, applying to trunk. gcc/cp/ChangeLog: PR c++/95552 * cp-gimplify.c (predeclare_vla): Only predeclare a VLA if it's wrapped in a pointer type. --- gcc/cp/cp-gimplify.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gcc/cp/cp-gimplify.c b/gcc/cp/cp-gimplify.c index e8fbc300fda..0e949e29c5c 100644 --- a/gcc/cp/cp-gimplify.c +++ b/gcc/cp/cp-gimplify.c @@ -1205,7 +1205,8 @@ predeclare_vla (tree expr) return expr; vla = TREE_TYPE (vla); } - if (TYPE_NAME (vla) || !variably_modified_type_p (vla, NULL_TREE)) + if (vla == type || TYPE_NAME (vla) + || !variably_modified_type_p (vla, NULL_TREE)) return expr; tree decl = build_decl (input_location, TYPE_DECL, NULL_TREE, vla); base-commit: 009668e31f4ee910eae874b24afb8eb6adf65fae -- 2.18.1