int __seg_gs var; void foo1 (void) { asm volatile ("# %0" :: "m" (var)); } int foo2 (void) { return var; } int __seg_gs *bar1 (void) { return &var; } int *bar2 (void) { // return &var; /* error */ return (int *)&var; } int *bar3 (void) { int *p; // p = &var; /* error */ p = (int *)&var; return p; } int __seg_gs *baz1 (void) { typeof(var) *p; /* (__seg_gs int *) */ p = &var; return p; } int *baz2 (void) { __typeof_unqual__(var) *p; /* (int *) */ // p = &var; /* error */ p = (int *)&var; return p; }