https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114737

            Bug ID: 114737
           Summary: Missed optimization : fail to optimize load with
                    select 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/3e5sfvfKj

```
char src(void** p, char* p1, bool c) {
    char* tostore1 = p1 + 1;
    char* tostore2 = p1 + 4;
    *p = tostore1;
    *p1 = 0;

    char* tostore = (c ? tostore1 : tostore2) + 1;
    *tostore = 1;
    return *p1;
}
```

"return *p1" can be optimized into "return 0" here.

```
char tgt(void** p, char* p1, bool c) {
    char* tostore1 = p1 + 1;
    char* tostore2 = p1 + 4;
    *p = tostore1;
    *p1 = 0;

    char* tostore = (c ? tostore1 : tostore2) + 1;
    *tostore = 1;
    return 0;
}
```

Reply via email to