[Bug rtl-optimization/88416] [8/9 Regression] ICE in in df_uses_record, at df-scan.c:3013

segher at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Dec 10 10:46:00 GMT 2018


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

Segher Boessenkool <segher at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |NEW

--- Comment #2 from Segher Boessenkool <segher at gcc dot gnu.org> ---
We started with

(insn 11 10 29 2 (set (reg:DI 85)
        (mem:DI (post_inc:DI (reg/f:DI 7 sp)) [0  S8 A8]))
"/home/segher/tot/lib/gcc/x86_64-pc-linux-gnu/9.0.0/include/ia32intrin.h":262:10
52 {*popdi1}
     (nil))
(debug_insn 29 11 12 2 (var_location:DI D#1 (reg:DI 85)) -1
     (nil))
(insn 12 29 13 2 (set (reg:DI 83 [ _4 ])
        (reg:DI 85))
"/home/segher/tot/lib/gcc/x86_64-pc-linux-gnu/9.0.0/include/ia32intrin.h":262:10
66 {*movdi_internal}
     (expr_list:REG_DEAD (reg:DI 85)
        (nil)))

and then we combined 11 into 12:

Trying 11 -> 12:
   11: r85:DI=[sp:DI++]
   12: r83:DI=r85:DI
      REG_DEAD r85:DI
Successfully matched this instruction:
(set (reg:DI 83 [ _4 ])
    (mem:DI (post_inc:DI (reg/f:DI 7 sp)) [0  S8 A8]))
allowing combination of insns 11 and 12
original costs 8 + 4 = 12
replacement cost 8
deferring rescan insn with uid = 29.
deferring deletion of insn with uid = 11.
modifying insn i3    12: r83:DI=[sp:DI++]
deferring rescan insn with uid = 12.

writing 29 as

(debug_insn 29 11 12 2 (var_location:DI D#1 (mem:DI (post_inc:DI (reg/f:DI 7
sp)
) [0  S8 A8])) -1
     (nil))

and df_insn_refs_verify chokes on that for some reason.  I dunno.

Unassigning.


More information about the Gcc-bugs mailing list