Hi, Monk Chiang I noticed that at -O0, static functions are emitting lpad instructions, whereas they do not at -O2. I'm not sure if this is expected behavior.
Upon further investigation, I found that c_node->only_called_directly_p() returns false, which is caused by force_output being set to 1. Tracing back, I encountered the following patch[1] and PR25961[2], which set force_output to 1 for static functions at -O0, while it is 0 at -O2. Do you have any comments on this? Example code: int cc = 333; extern int aa; __attribute__((noinline)) static void foo(void) { cc = aa; } int main(void) { foo(); return 0; } [1] https://gcc.gnu.org/legacy-ml/gcc-patches/2006-05/msg00315.html [2] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=24561