https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99862
--- Comment #8 from Richard Biener <rguenth at gcc dot gnu.org> --- (In reply to Richard Biener from comment #7) > (In reply to Zhendong Su from comment #2) > > [659] % gcctk -O1 -S -o O1.s small.c > > [660] % gcctk -O3 -S -o O3.s small.c > > [661] % > > [661] % wc O1.s O3.s > > 40 86 599 O1.s > > 68 138 1047 O3.s > > 108 224 1646 total > > [662] % > > [662] % grep foo O1.s > > [663] % grep foo O3.s > > call foo > > [664] % > > [664] % cat small.c > > extern void foo(void); > > int a, b, *c; > > static void d(int f) { > > if (f) > > foo(); > > } > > static int e(int f) { > > int g[] = {2, 8, 2, 8, 2, 8, 2, 8, 2, 8, 2}; > > int h[60]; > > h[0] = g != c; > > if (b) > > while (a) { > > int *i[1] = {&h[6]}; > > } > > return f; > > } > > static int *j(int *p) { return 0; } > > int main () { > > int m = e(0); > > d(m); > > int l[8]; > > if (j(l)) > > while (1) > > ; > > return 0; > > } > > This is a case similar to PR99991, we create a IPA CP clone and fail to > inline > that at -O3 while we are happy to IPA inline e() at -O1. I filed PR99993 for it. For the future please open separate bugs for separate testcases.