https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89290
--- Comment #3 from Uroš Bizjak <ubizjak at gmail dot com> --- This address should be valid: (const:DI (plus:DI (unspec:DI [ (symbol_ref:DI ("s") [flags 0x2a] <var_decl 0x7f1b48c08b40 s>) ] UNSPEC_NTPOFF) (const_int 8 [0x8]))) and there is code that allows this form in ix86_legitimate_address_p: /* foo@dtpoff(%rX) is ok. */ if (GET_CODE (disp) != CONST || GET_CODE (XEXP (disp, 0)) != PLUS || GET_CODE (XEXP (XEXP (disp, 0), 0)) != UNSPEC || !CONST_INT_P (XEXP (XEXP (disp, 0), 1)) || (XINT (XEXP (XEXP (disp, 0), 0), 1) != UNSPEC_DTPOFF && XINT (XEXP (XEXP (disp, 0), 0), 1) != UNSPEC_NTPOFF)) /* Non-constant pic memory reference. */ return false; Jakub, can you maybe look into this issue?