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

Reply via email to