https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98110
--- Comment #14 from Jakub Jelinek <jakub at gcc dot gnu.org> --- I guess with GCC 6 and later one can use: void foo (int *p) { for (int i = 0; i < 64; i++) { if (p[i]) { int *q; // asm ("mov %%fs:%c1,%0" : "=r" (q) : "i" (16)); q = *(int *__seg_fs *) 16; q[0]++; } } } instead (but I haven't done any testing beyond this testcase), for older GCC I guess you can keep using what it did because we've been lucky (dunno why).