https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114797
Bug ID: 114797 Summary: Missed optimization : fail to merge memset with unrelated clobber Product: gcc Version: 14.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: xxs_chy at outlook dot com Target Milestone: --- Godbolt link: https://godbolt.org/z/E581jvaPs Code like: ``` void src(char* config){ char stack[208]; memset(stack, 0, 184); *config = 0; memset(stack + 184, 0, 8); use(stack); } ``` can be transformed to ``` void tgt(char* config){ char stack[208]; memset(stack, 0, 192); *config = 0; use(stack); } ``` GCC doesn't merge them even both memsets overlap: https://godbolt.org/z/ffc6b8zqs