https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111736
--- Comment #27 from Jakub Jelinek <jakub at gcc dot gnu.org> --- I think it should. E.g. for int __seg_fs a; void foo (int __seg_fs *p) { a = *p; } the instrumentation is _5 = __builtin_return_address (0); __builtin___tsan_func_entry (_5); __builtin___tsan_read4 (p_3(D)); _1 = *p_3(D); __builtin___tsan_write4 (&a); a = _1; __builtin___tsan_func_exit (); [tail call] but neither __tsan_read4 nor __tsan_write4 will know that the address they are passed are not from the generic address space.