https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95655
--- Comment #2 from H.J. Lu <hjl.tools at gmail dot com> --- The differences starts at IRA: diff -upr good/y.i.286r.ira bad/y.i.286r.ira --- good/y.i.286r.ira 2020-06-12 05:15:19.975544607 -0700 +++ bad/y.i.286r.ira 2020-06-12 05:12:35.275007543 -0700 @@ -47,7 +47,7 @@ Ranges after the compression: border: Pressure: Hard reg set forest: - 0:( 0-6 8-15 20-35)@0 + 0:( 0-5 8-15 20-35)@0 Forming thread from colorable bucket: Disposition: New iteration of spill/restore move @@ -64,7 +64,7 @@ Dataflow summary: ;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] ;; entry block defs 0 [ax] 1 [dx] 2 [cx] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 28 [mm0] 29 [mm1] 30 [mm2] ;; exit block uses 6 [bp] 7 [sp] 19 [frame] -;; regs ever live +;; regs ever live 6 [bp] ;; ref usage r0={1d} r1={1d} r2={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1 d,2u} r20={1d} r21={1d} r22={1d} r28={1d} r29={1d} r30={1d} ;; total ref usage 20{13d,7u,0e} in 0{0 regular + 0 call} insns. (note 1 0 3 NOTE_INSN_DELETED)