https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79609
--- Comment #1 from roland at gnu dot org --- Note Clang uses __attribute__((address_space(N))) for this. That automagically handles the parsing issues in a well-known fashion, and gets C++ support for free to boot. Unfortunately they use per-target magic integer values to select among predefined address spaces, with no symbolic syntax (just documented magic values). You could e.g. change the __SEG_FS predefine to be the magic number, so that it's __attribute__((address_space(__SEG_FS))) and macroable-compatible with Clang. Or you could be more classy and take string values __attribute__((address_space("fs"))).