[Bug middle-end/13938] [3.5 Regression] ICE when rounding double to long long

zlomek at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Thu Feb 5 10:24:00 GMT 2004


------- Additional Comments From zlomek at gcc dot gnu dot org  2004-02-05 10:23 -------
This is caused by

2004-01-19  Jan Hubicka  <jh@suse.cz>
        * emit-rtl.c (verify_rtx_sharing, copy_insn_1,
        emit_copy_of_insn_after, emit_copy_of_insn_after): Clobbers
        containing hard regs are shared.
        (gen_hard_reg_clobber): New function.
        (hard_reg_clobbers): New array.
        * genemit.c (gen_exp): Use gen_hard_reg_clobber.
        (copy_rtx): Do not copy clobbers containing hard regs.
        * rtl.h (gen_hard_reg_clobber): Declare.

The problem is that clobber in            

(insn 57 17 59 1 (parallel [
            (set (mem:DI (plus:SI (reg/f:SI 6 bp)
                        (const_int -16 [0xfffffff0])) [0 S8 A8])
                (fix:DI (reg/v:DF 9 st(1) [orig:59 x ] [59])))
            (use (mem:HI (plus:SI (reg/f:SI 6 bp)
                        (const_int -2 [0xfffffffe])) [0 S2 A8]))
            (use (mem:HI (plus:SI (reg/f:SI 6 bp)
                        (const_int -4 [0xfffffffc])) [0 S2 A8]))
            (clobber (reg:DF 9 st(1)))
        ]) 146 {fix_truncdi_memory} (insn_list 17 (insn_list 48 (insn_list 51
(nil))))
    (expr_list:REG_DEAD (reg/v:DF 9 st(1) [orig:59 x ] [59]) 
        (expr_list:REG_UNUSED (reg/v:DF 9 st(1) [orig:59 x ] [59])
            (nil))))

is shared with

(insn 89 23 90 3 (parallel [
            (set (mem:DI (plus:SI (reg/f:SI 6 bp)
                        (const_int -16 [0xfffffff0])) [0 S8 A8])
                (fix:DI (reg:DF 8 st)))
            (use (mem:HI (plus:SI (reg/f:SI 6 bp)
                        (const_int -2 [0xfffffffe])) [0 S2 A8]))
            (use (mem:HI (plus:SI (reg/f:SI 6 bp)
                        (const_int -4 [0xfffffffc])) [0 S2 A8]))
            (clobber (reg:DF 9 st(1)))
        ]) 146 {fix_truncdi_memory} (insn_list 23 (insn_list 85 (insn_list 88
(nil))))
    (expr_list:REG_DEAD (reg:DF 8 st)
        (nil)))

but in the first insn there should be
(clobber (reg/v:DF 9 st(1)))
instead of
(clobber (reg:DF 9 st(1)))

This bug is probably the same as PR/13893

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
   Last reconfirmed|2004-02-01 19:02:06         |2004-02-05 10:23:56
               date|                            |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13938



More information about the Gcc-bugs mailing list