public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug tree-optimization/114489] New: introduced redundant load facing different branches
@ 2024-03-26 20:09 absoler at smail dot nju.edu.cn
  2024-03-26 20:18 ` [Bug tree-optimization/114489] " pinskia at gcc dot gnu.org
  2024-03-26 20:19 ` pinskia at gcc dot gnu.org
  0 siblings, 2 replies; 3+ messages in thread
From: absoler at smail dot nju.edu.cn @ 2024-03-26 20:09 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 114489
           Summary: introduced redundant load facing different branches
           Product: gcc
           Version: 13.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: absoler at smail dot nju.edu.cn
  Target Milestone: ---

similar with https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107050, but without
function call.

```
int f = 1;
int g1, g2, arr[10];

int func_1() {
    int a = 4;
    int *p1 = &g1;
    if (f) {
        arr[0] = g2;
        int *p2 = &a;
        a = 1;
    }
    *p1 &= (a > 9) - 5;
    return a;
}

int main() {
    func_1();
}
```
gcc-13.2.0 -O1 generates:
```
func_1():
  401106:       mov    0x2f80(%rip),%eax        # 40408c <g1>  # first load
  40110c:       mov    $0x4,%edx
  401111:       cmpl   $0x0,0x2f10(%rip)        # 404028 <f>
  401118:       je     401131 <func_1+0x2b>
  40111a:       mov    0x2f68(%rip),%eax        # 404088 <g2>
  401120:       mov    %eax,0x2f3a(%rip)        # 404060 <arr>
  401126:       mov    0x2f60(%rip),%eax        # 40408c <g1>  # second load
  40112c:       mov    $0x1,%edx
  401131:       and    $0xfffffffb,%eax
  401134:       mov    %eax,0x2f52(%rip)        # 40408c <g1>
  40113a:       mov    %edx,%eax
  40113c:       retq   
```

I wonder why compiler won't use another register to hold `g2`, so that the
second load is unnecessary.

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2024-03-26 20:19 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-03-26 20:09 [Bug tree-optimization/114489] New: introduced redundant load facing different branches absoler at smail dot nju.edu.cn
2024-03-26 20:18 ` [Bug tree-optimization/114489] " pinskia at gcc dot gnu.org
2024-03-26 20:19 ` pinskia at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).