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

--- Comment #8 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Uroš Bizjak from comment #1)
> Perhaps related,
> 
> --cut here--
> int a;
> 
> int foo(void)
> {
>   return *(volatile int *) &a + *(volatile int *) &a;
> }
> --cut here--
> 
> compiles with -O2 to:
> 
>         movl    a(%rip), %eax
>         movl    a(%rip), %edx
>         addl    %edx, %eax
>         ret
> 
> but may be compiled to:
> 
>         movl    a(%rip), %eax
>         addl    a(%rip), %eax
>         ret
> 
> (the memory read may propagate to the insn)

That is pr 3506

Reply via email to