https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71112
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Big-endian: (insn 5 4 6 (set (reg:DI 73) (high:DI (symbol_ref:DI ("_GLOBAL_OFFSET_TABLE_")))) t.i:5 -1 (nil)) (insn 6 5 7 (set (reg/f:SI 76) (unspec:SI [ (mem/u/c:SI (lo_sum:SI (nil) (symbol_ref:SI ("dbs") [flags 0x40] <var_decl 0x7fe8ca85aab0 dbs>)) [0 S4 A8]) ] UNSPEC_GOTSMALLPIC28K)) t.i:5 -1 (expr_list:REG_EQUAL (symbol_ref:SI ("dbs") [flags 0x40] <var_decl 0x7fe8ca85aab0 dbs>) (nil))) Little-endian: (insn 5 4 6 (set (reg:DI 73) (high:DI (symbol_ref:DI ("_GLOBAL_OFFSET_TABLE_")))) t.i:5 -1 (nil)) (insn 6 5 7 (set (reg/f:SI 76) (unspec:SI [ (mem/u/c:SI (lo_sum:SI (subreg:SI (reg:DI 73) 0) (symbol_ref:SI ("dbs") [flags 0x40] <var_decl 0x7fcb3777aab0 dbs>)) [0 S4 A8]) ] UNSPEC_GOTSMALLPIC28K)) t.i:5 -1 (expr_list:REG_EQUAL (symbol_ref:SI ("dbs") [flags 0x40] <var_decl 0x7fcb3777aab0 dbs>) (nil))) ------- CUT ------- Looks like lowpart is doing the wrong thing here ....