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 .