https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99122
--- Comment #12 from Jakub Jelinek <jakub at gcc dot gnu.org> --- E.g. static int foo (); int bar (int n) { return foo (n, 2.0); } static inline int foo (int n, struct T { char a[n]; } b) { int r = 0, i; for (i = 0; i < n; i++) r += b.a[i]; return r; } ICEs at -O2 too. And there is no WITH_SIZE_EXPR argument in that case. So I think next to looking for WITH_SIZE_EXPR arguments it should also look through callee DECL_ARGUMENTS if any argument has non-constant TYPE_SIZE* (or DECL_SIZE*?).