https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110606
--- Comment #7 from Jeevitha <jeevitha at gcc dot gnu.org> --- The following insns are dead at sched2, but not removed until pass_final, If these instruction are removed there will be no ICE. (insn 80 110 111 3 (set (reg:DI 28 28 [145]) (high:DI (unspec:DI [ (reg:DI 2 2) ] UNSPEC_TLSLD))) "test.cc":27:7 737 {*tls_ld_high64} (expr_list:REG_EQUIV (high:DI (unspec:DI [ (reg:DI 2 2) ] UNSPEC_TLSLD)) (nil))) (insn:TI 81 106 54 3 (set (reg:DI 28 28 [139]) (lo_sum:DI (reg:DI 28 28 [145]) (unspec:DI [ (reg:DI 2 2) ] UNSPEC_TLSLD))) "test.cc":27:7 738 {*tls_ld_low64} (expr_list:REG_DEAD (reg:DI 2 2) (nil))) (insn 72 23 53 4 (set (reg:DI 3 3) (reg:DI 28 28 [139])) "test.cc":27:7 683 {*movdi_internal64} (nil)) call_insn/u 26 53 35 4 (parallel [ (set (reg:DI 3 3) (call (mem:SI (symbol_ref:DI ("__tls_get_addr") [flags 0x41] <function_decl 0x7ffff576df00 __tls_get_addr>) [0 S4 A8]) (unspec:DI [ (reg:DI 2 2) ] UNSPEC_TLSLD))) (use (const_int 0 [0])) (clobber (reg:DI 96 lr)) ]) "test.cc":27:7 776 {*call_value_nonlocal_aixdi} (expr_list:REG_UNUSED (reg:DI 3 3) (expr_list:REG_CALL_DECL (symbol_ref:DI ("__tls_get_addr") [flags 0x41] <function_decl 0x7ffff576df00 __tls_get_addr>) (expr_list:REG_EH_REGION (const_int -2147483648 [0xffffffff80000000]) (nil)))) (expr_list (use (reg:DI 2 2)) (expr_list (use (reg:DI 3 3)) (nil))))