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

Drea Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
          Component|rtl-optimization            |target

--- Comment #7 from Drea Pinski <pinskia at gcc dot gnu.org> ---
So there looks like some missed optimizations on the gimple level which is
exposing the issue on the RTL level.
```
  entries.2_43 = entries;
  _47 = entries.2_43->slot;
  if (_47 != 0B)
    goto <bb 6>; [89.00%]
  else
    goto <bb 10>; [11.00%]

  <bb 6> [local count: 168621907]:
  if (pretmp_78 != 0B)
    goto <bb 7>; [100.00%]
  else
    goto <bb 8>; [0.00%]


  <bb 10> [local count: 118442969]:
  if (pretmp_78 != 0B)
    goto <bb 7>; [100.00%]
  else
    goto <bb 8>; [0.00%]
```

So what is happening is this part:
(call_insn/u:TI 10 9 23 3 (parallel [
            (set (reg:DI 0 ax)
                (call:DI (mem:QI (symbol_ref:DI ("__tls_get_addr")) [0  S1 A8])
                    (const_int 0 [0])))
            (unspec:DI [
                    (reg/f:DI 7 sp)
                ] UNSPEC_TLS_LD_BASE)
            (clobber (reg:DI 5 di))
        ]) "t5.c":15:7 1788 {*tls_local_dynamic_base_64_di}
     (expr_list:REG_UNUSED (reg:DI 0 ax)
        (expr_list:REG_EH_REGION (const_int -2147483648 [0xffffffff80000000])
            (nil)))
    (nil) 0)

is not being deleting.  I think this is due to this being a call_insn.  No
other target uses call here .... So back to a target specific issue.

Reply via email to