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

            Bug ID: 116599
           Summary: volatile generates unexpected RMW on global
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: andi-gcc at firstfloor dot org
  Target Milestone: ---

On x86_64-linux:

volatile int a;

void f1(void)
{
        a++;
}

int b;

void f2(void)
{
        b++;
}

generates

f1:
        movl    a(%rip), %eax
        addl    $1, %eax
        movl    %eax, a(%rip)
        ret

f2:
        addl    $1, b(%rip)
        ret


I would expect f1 to have the same code as f2.
  • [Bug target/116599] New: volat... andi-gcc at firstfloor dot org via Gcc-bugs

Reply via email to