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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |lto
                 CC|                            |jsm28 at gcc dot gnu.org

--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> ---
Note this isn't a nested function but a function declaration. Doesn't ICE with
a nested function:

int fn3();

void fn1() {
    void fn2(int a[][fn3()])
      {
      }
    int x[1][fn3()];
    fn2(x);
}

but still has the bogus non-gimplified type:

fn1 ()
{
...
  static void fn2 (int[0:(sizetype) ((long int) SAVE_EXPR <fn3 ()> + -1)] *);


and odd place of evaluating fn3():

fn2 (int[0:D.1798] * a)
{
  int D.1797;
  sizetype D.1798;
  bitsizetype D.1799;
  sizetype D.1800;

  D.1797 = fn3 ();
  _1 = (long int) D.1797;
...


I wonder what the standards say about side-effects in those "declarations".

Reply via email to