Mercurial > hg > graal-compiler
diff src/share/vm/opto/loopnode.cpp @ 4064:670a74b863fc
7107042: assert(no_dead_loop) failed: dead loop detected
Summary: Use dead nodes elimination code in PhaseIdealLoop before executing EA.
Reviewed-by: never, twisti
author | kvn |
---|---|
date | Wed, 09 Nov 2011 07:25:51 -0800 |
parents | 2c24ef16533d |
children | e8fdaf4a66cb |
line wrap: on
line diff
--- a/src/share/vm/opto/loopnode.cpp Wed Nov 09 06:14:32 2011 -0800 +++ b/src/share/vm/opto/loopnode.cpp Wed Nov 09 07:25:51 2011 -0800 @@ -1883,7 +1883,7 @@ //----------------------------build_and_optimize------------------------------- // Create a PhaseLoop. Build the ideal Loop tree. Map each Ideal Node to // its corresponding LoopNode. If 'optimize' is true, do some loop cleanups. -void PhaseIdealLoop::build_and_optimize(bool do_split_ifs) { +void PhaseIdealLoop::build_and_optimize(bool do_split_ifs, bool skip_loop_opts) { ResourceMark rm; int old_progress = C->major_progress(); @@ -2072,6 +2072,16 @@ } #endif + if (skip_loop_opts) { + // Cleanup any modified bits + _igvn.optimize(); + + if (C->log() != NULL) { + log_loop_tree(_ltree_root, _ltree_root, C->log()); + } + return; + } + if (ReassociateInvariants) { // Reassociate invariants and prep for split_thru_phi for (LoopTreeIterator iter(_ltree_root); !iter.done(); iter.next()) {