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

            Bug ID: 112266
           Summary: `constcall(a)` and `constcall(&a->b[0])` is not being
                    optimized to one call
           Product: gcc
           Version: 14.0
            Status: UNCONFIRMED
          Keywords: missed-optimization
          Severity: enhancement
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: pinskia at gcc dot gnu.org
  Target Milestone: ---

Take:
```
struct a
{
        int b[1];
};

[[gnu::const]]
int constcall(int *a);

int f(struct a *b)
{
  int *c = b->b;
  int *d = (int*)b;
  int t = constcall(c);
  int t1 = constcall(d);
  return t+t1;
}

```

There should only be one call to constcall since the argument is the exact same
value just represented slightly different in the IR.

Reply via email to