------- Comment #8 from dave at hiauly1 dot hia dot nrc dot ca 2007-02-04
17:06 -------
Subject: Re: FAIL: gfortran.fortran-torture/execute/intrinsic_set_exponent.f90
> My patch just exposed a latent bug. Does this fail on the trunk also the same
> way? If not can you trace to see where the difference in the IR between the
> 4.2 branch and trunk show up?
This is the rtl after expansion that's a problem:
(insn 84 82 87 14 (set (reg:DI 76 [ equiv.1 ])
(const_int 4503599627370495 [0xfffffffffffff])) -1 (nil)
(nil))
(insn 87 84 88 14 (set (reg:DF 32 %fr4)
(subreg:DF (reg:DI 76 [ equiv.1 ]) 0)) -1 (nil)
(nil))
After greg, we have:
(note 84 82 239 11 NOTE_INSN_DELETED)
(insn 239 84 87 11 (set (reg:DF 32 %fr4 [ equiv.1 ])
(mem/u/c/i:DF (symbol_ref/u:DI ("*L$C0007") [flags 0x2]) [0 S8 A64]))
-1 (nil)
(nil))
(insn 87 239 88 11 (set (reg:DF 32 %fr4 [ equiv.1 ])
(reg:DF 32 %fr4 [ equiv.1 ])) 122 {*pa.md:4332} (insn_list:REG_DEP_TRUE
84 (nil))
(expr_list:REG_DEAD (reg:DI 76 [ equiv.1 ])
(expr_list:REG_EQUAL (const_double:DF
2.22507385850720088902458687608585988765042311224096e-308
[0x0.fffffffffffffp-1022])
(nil))))
This is what 4.1.1 generated:
(insn 85 83 86 12 (set (reg:DI 93)
(const_int 4503599627370495 [0xfffffffffffff])) -1 (nil)
(nil))
(insn 86 85 88 12 (set (mem/s/j/c:DI (reg/f:DI 62 virtual-stack-vars) [0
equiv.1.i+0 S8 A64])
(reg:DI 93)) -1 (nil)
(nil))
(insn 88 86 91 12 (set (reg/f:DI 74 [ D.611 ])
(reg/f:DI 62 virtual-stack-vars)) -1 (nil)
(nil))
(insn 91 88 92 12 (set (reg:DF 32 %fr4)
(mem:DF (reg/f:DI 74 [ D.611 ]) [0 S8 A64])) -1 (nil)
(nil))
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30634