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

Reply via email to