This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug middle-end/60418] [4.9 Regression] 435.gromacs in SPEC CPU 2006 is miscompiled
- From: "hjl.tools at gmail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Wed, 05 Mar 2014 19:18:06 +0000
- Subject: [Bug middle-end/60418] [4.9 Regression] 435.gromacs in SPEC CPU 2006 is miscompiled
- Auto-submitted: auto-generated
- References: <bug-60418-4 at http dot gcc dot gnu dot org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60418
--- Comment #6 from H.J. Lu <hjl.tools at gmail dot com> ---
(In reply to Richard Biener from comment #4)
>
> That's odd. What's the code generation difference in the end
> for the minimal range {to, from} that still shows a difference
> of the result?
In this particular case, loops_state_satisfies_p (LOOPS_HAVE_PREHEADERS)
returns false:
(gdb) bt
#0 tree_forwarder_block_p (bb=0x7f69144186e8, phi_wanted=false)
at ../../../../gcc/gcc/tree-cfgcleanup.c:357
#1 0x0000000000a9a07c in cleanup_tree_cfg_bb (bb=0x7f69144186e8)
at ../../../../gcc/gcc/tree-cfgcleanup.c:666
#2 0x0000000000a9a19c in cleanup_tree_cfg_1 ()
at ../../../../gcc/gcc/tree-cfgcleanup.c:709
#3 0x0000000000a9a2d4 in cleanup_tree_cfg_noloop ()
at ../../../../gcc/gcc/tree-cfgcleanup.c:765
#4 0x0000000000a9a3e0 in cleanup_tree_cfg ()
at ../../../../gcc/gcc/tree-cfgcleanup.c:820
#5 0x0000000000967f20 in execute_function_todo (data=0x834)
at ../../../../gcc/gcc/passes.c:1811
#6 0x000000000096732a in do_per_function (
callback=0x967ee1 <execute_function_todo(void*)>, data=0x834)
at ../../../../gcc/gcc/passes.c:1574
#7 0x0000000000968176 in execute_todo (flags=2100)
at ../../../../gcc/gcc/passes.c:1887
#8 0x0000000000968c05 in execute_one_pass (pass=0x29469b0)
at ../../../../gcc/gcc/passes.c:2243
#9 0x0000000000968d8f in execute_pass_list (pass=0x29469b0)
at ../../../../gcc/gcc/passes.c:2282
#10 0x0000000000968dc0 in execute_pass_list (pass=0x2945ed0)
at ../../../../gcc/gcc/passes.c:2283
---Type <return> to continue, or q <return> to quit---q
Quit
(gdb) f 5
#5 0x0000000000967f20 in execute_function_todo (data=0x834)
at ../../../../gcc/gcc/passes.c:1811
1811 cleanup_tree_cfg ();
(gdb) f 6
#6 0x000000000096732a in do_per_function (
callback=0x967ee1 <execute_function_todo(void*)>, data=0x834)
at ../../../../gcc/gcc/passes.c:1574
1574 callback (data);
(gdb) f 8
#8 0x0000000000968c05 in execute_one_pass (pass=0x29469b0)
at ../../../../gcc/gcc/passes.c:2243
2243 execute_todo (todo_after | pass->todo_flags_finish);
(gdb) p *pass
$4 = {<pass_data> = {type = GIMPLE_PASS, name = 0x1300470 "phicprop",
optinfo_flags = 0, has_gate = true, has_execute = true,
tv_id = TV_TREE_PHI_CPROP, properties_required = 40,
properties_provided = 0, properties_destroyed = 0,
todo_flags_start = 524288, todo_flags_finish = 2100},
_vptr.opt_pass = 0x13003d0 <vtable for (anonymous
namespace)::pass_phi_only_cprop+16>, sub = 0x0, next = 0x2946a10,
static_pass_number = 85,
graph_dump_initialized = false, m_ctxt = 0x29214e0}
Is this OK for the phicprop pass to remove loop pre-headers when
loop_optimizer_init isn't called?