https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110531
--- Comment #10 from Hao Liu <hliu at amperecomputing dot com> --- > foo is just an example for not getting inlined, the point here is extra cost > paid. My point is that the case is different from the original case in tree-vect-loop.cc. For example, change the case as following: __attribute__((noipa)) int foo(int *a) { *a == 1 ? return 1 : return 0;} That's similar to the original problem (the value of "a" is undefiend). I don't mean that "a" must be initialized in test(). We can also initalize "a" in foo, but should not use "a" before initialization. E.g. __attribute__((noipa)) int foo(int *a) { *a == 1; ... if (*a) } The above case has no problem.