https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122033
Bug ID: 122033 Summary: optimize_stack_restore's comment does not match the code Product: gcc Version: 16.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: pinskia at gcc dot gnu.org Target Milestone: --- Take: ``` void g(int*); void h(); double t; void f(int a, int b) { { int array0[a]; { int array1[b]; g(array0); g(array1); } t = __builtin_sin(t); } h(); } ``` Right now optimize_stack_restore will remove the inner most stack_save/stack_restore even though there is a call to sin. The comment in front of the function says: ``` ... Optimize it out if there is another __builtin_stack_restore in the same basic block and no calls or ASM_EXPRs are in between, or if this block's only outgoing edge is to EXIT_BLOCK and there are no calls or ASM_EXPRs after this __builtin_stack_restore. ``` But the code will allow all normal builtins except for allocas and __scrub_leave. The except for allocas was added due to PR 43220 but the comment was NOT changed. I noticed this while looking into PR 121762.