[Bug rtl-optimization/47464] [4.6 Regression] Many gomp failures
law at redhat dot com
gcc-bugzilla@gcc.gnu.org
Wed Jan 26 05:45:00 GMT 2011
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47464
--- Comment #3 from Jeffrey A. Law <law at redhat dot com> 2011-01-26 04:33:24 UTC ---
Stranger and stranger. It looks like my patch may have exposed a latent bug
in the post-reload ifcvt pass. It's moving some insns which clearly aren't
safe to move.
IF-CASE-1 found, start 2, then 3
rescanning insn with uid = 25.
deleting insn with uid = 25.
changing bb of uid 27
changing bb of uid 69
from 3 to 2
changing bb of uid 28
from 3 to 2
changing bb of uid 78
unscanned insn
scanning new insn with uid = 79.
deleting insn with uid = 26.
deleting insn with uid = 65.
deleting insn with uid = 66.
deleting block 3
shoving block 9 into 3
Conversion succeeded on pass 1.
[ ... ]
(insn 69 27 28 2 (set (reg/v:SI 0 ax [orig:75 ix ] [75])
(mem/s/c:SI (reg/f:DI 1 dx [orig:71 D.17991 ] [71]) [6 MEM[(const
struct VEC_tree_base *)D.17991_13].num+0 S4 A64])) j.c:7464 64
{*movsi_internal}
(nil))
(insn 28 69 24 2 (parallel [
(set (reg/v:SI 0 ax [orig:75 ix ] [75])
(plus:SI (reg/v:SI 0 ax [orig:75 ix ] [75])
(const_int -1 [0xffffffffffffffff])))
(clobber (reg:CC 17 flags))
]) j.c:7464 252 {*addsi_1}
(expr_list:REG_UNUSED (reg:CC 17 flags)
(nil)))
(insn 24 28 25 2 (set (reg:CCZ 17 flags)
(compare:CCZ (reg/f:DI 1 dx [orig:71 D.17991 ] [71])
(const_int 0 [0]))) j.c:7464 3 {*cmpdi_ccno_1}
(nil))
(jump_insn 25 24 78 2 (set (pc)
(if_then_else (ne (reg:CCZ 17 flags)
(const_int 0 [0]))
(label_ref:DI 64)
(pc))) j.c:7464 591 {*jcc_1}
(expr_list:REG_DEAD (reg:CCZ 17 flags)
(expr_list:REG_BR_PROB (const_int 8500 [0x2134])
(nil)))
insns 69 & 28 had previously been in a different block and guarded by the
compare & jump at insns 24 & 25 respectively. Very very interesting.
More information about the Gcc-bugs
mailing list