This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug middle-end/60418] [4.9 Regression] 435.gromacs in SPEC CPU 2006 is miscompiled


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?


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]