https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100483
Bug ID: 100483 Summary: Extend -fno-semantic-interposition to global variables Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: i at maskray dot me Target Milestone: --- % cat a.c int var; int foo() { return var; } (I implemented this for clang 11 x86) % clang -fpic -fno-semantic-interposition -O2 -S a.c % cat a.s ... foo: # @foo .Lfoo$local: # %bb.0: # %entry movl .Lvar$local(%rip), %eax retq ... var: .Lvar$local: .long 0 # 0x0 .size var, 4 # On x86-64, because of R_X86_64_REX_GOTPCRELX, it isn't too bad without the optimization. # This is more useful on other architectures without GOT optimization. # With my clang patch https://reviews.llvm.org/D101873 % clang -target aarch64 -fpic -fno-semantic-interposition -fno-asynchronous-unwind-tables -O2 -S a.c % cat a.s ... foo: // @foo .Lfoo$local: // %bb.0: // %entry adrp x8, .Lvar$local ldr w0, [x8, :lo12:.Lvar$local] ret