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

--- Comment #17 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Sam James from comment #14)
> ```
...
> @@ -299452,7 +299451,11 @@ Processing insn:
>        REG_DEAD r477:SI
>  Trying to simplify pattern:
>  (zero_extend:SI (subreg:HI (reg:SI 477) 0))
> -Rejected due to debug counter.
> +***dbgcnt: upper limit 32 reached for ext_dce.***
> +rescanning insn with uid = 368.
> +Successfully transformed to:
> +(reg:SI 477)
> +
...
> ```

```
(insn 366 365 368 31 (set (reg:SI 477)
        (fix:SI (reg:SF 266 [ _350 ]))) "../../src/hb-open-type.hh":155:38
discrim 1 218 {fix_truncsfsi_sse}
     (expr_list:REG_DEAD (reg:SF 266 [ _350 ])
        (nil)))
(insn 368 366 369 31 (set (reg:SI 613 [ _351 ])
        (reg:SI 477)) "../../src/hb-algs.hh":125:52 89 {*movsi_internal}
     (expr_list:REG_DEAD (reg:SI 477)
        (nil)))
(insn 369 368 372 31 (set (reg:HI 270 [ _354 ])
        (bswap:HI (subreg:HI (reg:SI 613 [ _351 ]) 0)))
"../../src/hb-algs.hh":125:52 1426 {*bswaphi2_movbe}
     (nil))
...
(insn 379 377 380 31 (set (reg:HI 225 [ _297 ])
        (bswap:HI (reg:HI 270 [ _354 ]))) "../../src/hb-algs.hh":137:30 1426
{*bswaphi2_movbe}
     (expr_list:REG_DEAD (reg:HI 270 [ _354 ])
        (nil)))
(insn 380 379 381 31 (set (reg:SI 485 [ _297 ])
        (sign_extend:SI (reg:HI 225 [ _297 ])))
"../../src/hb-open-type.hh":154:72 discrim 1 182 {extendhisi2}
     (expr_list:REG_DEAD (reg:HI 225 [ _297 ])
        (nil)))
(insn 381 380 383 31 (set (reg:SF 484 [ _299 ])
        (float:SF (reg:SI 485 [ _297 ]))) "../../src/hb-open-type.hh":154:72
discrim 1 237 {*floatsisf2}
     (expr_list:REG_DEAD (reg:SI 485 [ _297 ])
        (nil)))
```
That is an ok transformation as far as I know.
insn 368 is where the zero_extend was removed.  If anything maybe something
else afterwards (not ext-dce) optimizes something incorrectly.

r485 is just a sign_extend:si of r477:hi .

Reply via email to