https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110606

--- Comment #9 from Jeevitha <jeevitha at gcc dot gnu.org> ---
(In reply to Segher Boessenkool from comment #8)
> What does "dead at sched2" mean?  Are they dead when sched2 starts, or made
> dead
> by it?  Well it must be the former; what pass does make it dead, then? 
> split3
> apparently?  Why is this not done in split2 already, any good reason?

Its latter, dead after sched2, DCE was happened in sched2 which removes the
uses of reg 3,

The following is the insn removed in sched2,
(insn 28 26 29 4 (set (reg:DI 9 9 [132])
        (unspec:DI [
                (reg:DI 3 3 [142])
                (symbol_ref:DI ("_ZL8sMemPool") [flags 0x1a]  <var_decl
0x7ffff54d0ab0 sMemPool>)
            ] UNSPEC_TLSDTPRELHA)) "test.cc":27:7 740 {tls_dtprel_ha_64}
     (expr_list:REG_DEAD (reg:DI 3 3 [142])
        (nil)))

This makes the following insn unused, There was nouse of register 3 after this.
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}

Reply via email to