https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113106
--- Comment #2 from Uroš Bizjak <ubizjak at gmail dot com> --- For reference, the same optimization should be applied with address spaces: --cut here-- int __seg_gs b; int bar(void) { return *(volatile __seg_gs int *) &b + b; } --cut here-- the above testcase currently compiles to: movl %gs:b(%rip), %eax addl %gs:b(%rip), %eax ret but can be compiled to: movl %gs:b(%rip), %eax addl %eax, %eax ret