https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81708
--- Comment #18 from Alexandre Oliva <aoliva at gcc dot gnu.org> --- on x86_64 with -fPIC or -fpic, my_guard's address is indeed loaded from the GOT with @GOTPCREL indeed on x86_64 with -fPIE or -fpie, however, it is used just as expected by the testcase. which should be fine as long as my_guard is required to be a link-time defined constant. but if it is, then there's no point in loading its address from the GOT, not on x86_64 PIC, not on ia32 PIC/PIE. thus my question. something's fishy there.