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

--- Comment #9 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Though, it seems they can be hiding pretty much everywhere:
int fn3();
void (**fn5) (int[][fn3 ()]);

void fn1 () {
  int a[10][fn3 ()];
  (**fn5) (a);
}
ICEs with -O2 -flto, so does:
int fn3();
typedef void (*fn6) (int[][fn3 ()]);
fn6 **fn7;

void fn1 () {
  int a[10][fn3 ()];
  (**fn7) (a);
}
and so does:
int fn3();
typedef void (*fn6) (int[][fn3 ()]);
struct S {
  fn6 **fn7;
  fn6 *fn8;
  fn6 fn9;
} s;

void fn1 () {
  int a[10][fn3 ()];
  (**s.fn7) (a);
  (*s.fn8) (a);
  s.fn9 (a);
}

So I'd think trying to fix it up late is just too late, we want to change it
immediately after finishing a declaration that is not a function definition.

Reply via email to