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

            Bug ID: 122357
           Summary: missed optimization for sum of 2 volatiles on x86
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: rtl-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: benjamin.p.kallus.gr at dartmouth dot edu
  Target Milestone: ---

Here's a C program:
> volatile int i, j;
> int main(void) { return i + j; }

x86-64 gcc trunk emits the following at -O3:
> "main":
>         mov     eax, DWORD PTR "i"[rip]
>         mov     edx, DWORD PTR "j"[rip]
>         add     eax, edx
>         ret
> "j":
>         .zero   4
> "i":
>         .zero   4

This could be made a little more optimal:
> "main":
>         mov     eax, DWORD PTR "i"[rip]
>         add     eax, DWORD PTR "j"[rip]
>         ret
> "j":
>         .zero   4
> "i":
>         .zero   4

This saves a register and an instruction, and is what clang emits.
  • [Bug rtl-optimizati... benjamin.p.kallus.gr at dartmouth dot edu via Gcc-bugs

Reply via email to