https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108375

            Bug ID: 108375
           Summary: [10/11/12/13 Regression] Some variably modified types
                    not detected as such
           Product: gcc
           Version: 13.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: jsm28 at gcc dot gnu.org
  Target Milestone: ---

variably_modified_type_p fails to detect an array type as variably modified if
the array and its element type are of constant size but the element type is
variably modified. For example, the following code should be diagnosed as
invalid, but is not (similar rejects-valid or wrong-code examples could no
doubt be constructed as well).

void
f (int a)
{
  typedef int A[a];
  goto x;
  A *p[2];
  x : ;
}

This is a regression in 4.2 and later relative to older versions, I think
introduced by g:2e3b8fe7b5405a94d86bfa323c0e80e83c58d784 .

commit 2e3b8fe7b5405a94d86bfa323c0e80e83c58d784
Author: Eric Botcazou <ebotca...@adacore.com>
Date:   Wed May 17 13:11:09 2006 +0000

    tree.c (variably_modified_type_p): Return true if the element type is
variably modified without recursing.

            * tree.c (variably_modified_type_p) <ARRAY_TYPE>: Return true
            if the element type is variably modified without recursing.

    From-SVN: r113858

Reply via email to