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

            Bug ID: 119493
           Summary: [12/13/14/15 Regression] missing tail call to self
                    with struct in some cases
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Keywords: missed-optimization, tail-call
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: pinskia at gcc dot gnu.org
  Target Milestone: ---

Extracted from https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92474#c1:
starting with r273603 (r10-1982-g4eb503965ac70e), the trunk doesn't tail call
optimize this either even without -fsanitize=, unless -fno-tree-sra.

testcase:
```
    struct MyStruct {
        unsigned  n_recurses;
    };

    MyStruct foo(MyStruct m) {
        return (m.n_recurses == 0)? m : foo(MyStruct{m.n_recurses - 1});
    }

    int main() {
        foo(MyStruct{999999});
    }
```

Reply via email to