https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90178
--- Comment #4 from H.J. Lu <hjl.tools at gmail dot com> --- The removed insn is insn 35 in: ;; basic block 8, loop depth 0, count 114863532 (estimated locally), maybe hot ;; prev block 7, next block 1, flags: (REACHABLE, HOT_PARTITION, RTL) ;; pred: 7 [always] count:6317494 (estimated locally) (FALLTHRU) ;; 4 [5.5% (guessed)] count:55807731 (estimated locally) (LOOP_EXIT) ;; 6 [always] count:52738306 (estimated locally) ;; bb 8 artificial_defs: { } ;; bb 8 artificial_uses: { u44(6){ }u45(7){ }u46(16){ }u47(19){ }} ;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] 90 ;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] 90 ;; lr def 0 [ax] (code_label 34 6 37 8 1 (nil) [2 uses]) (note 37 34 35 8 [bb 8] NOTE_INSN_BASIC_BLOCK) (insn 35 37 36 8 (set (reg/i:DI 0 ax) (reg/f:DI 90 [ <retval> ])) "x.i":8:1 66 {*movdi_internal} (expr_list:REG_DEAD (reg/f:DI 90 [ <retval> ]) (nil))) (insn 36 35 0 8 (use (reg/i:DI 0 ax)) "x.i":8:1 -1 (nil)) ;; succ: EXIT [always] count:114863532 (estimated locally) (FALLTHRU) ;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] With -mvzeroupper, it becomes: ;; basic block 8, loop depth 0, count 114863532 (estimated locally), maybe hot ;; prev block 7, next block 1, flags: (HOT_PARTITION, RTL) ;; pred: 7 [always] count:6317494 (estimated locally) (FALLTHRU) ;; 4 [5.5% (guessed)] count:55807731 (estimated locally) (LOOP_EXIT) ;; 6 [always] count:52738306 (estimated locally) ;; bb 8 artificial_defs: { } ;; bb 8 artificial_uses: { u-1(7){ }} ;; lr in 0 [ax] 7 [sp] ;; lr use 7 [sp] <<<< [ax] is missing. ;; lr def ;; live in 0 [ax] 7 [sp] ;; live gen ;; live kill (code_label 54 36 53 8 6 (nil) [2 uses]) (note 53 54 51 8 [bb 8] NOTE_INSN_BASIC_BLOCK) ;; succ: EXIT [always] count:114863532 (estimated locally) (FALLTHRU) ;; lr out 0 [ax] 7 [sp] ;; live out 0 [ax] 7 [sp]