Mercurial > hg > graal-compiler
comparison src/share/vm/opto/loopnode.cpp @ 3845:c96c3eb1efae
7068051: SIGSEGV in PhaseIdealLoop::build_loop_late_post
Summary: Removed predicate cloning from loop peeling optimization and from split fall-in paths.
Reviewed-by: never
author | kvn |
---|---|
date | Fri, 29 Jul 2011 09:16:29 -0700 |
parents | aacaff365100 |
children | 6987871cfb9b |
comparison
equal
deleted
inserted
replaced
3844:ce3e1d4dc416 | 3845:c96c3eb1efae |
---|---|
1165 Node *ctl = _head->in(LoopNode::EntryControl); | 1165 Node *ctl = _head->in(LoopNode::EntryControl); |
1166 Node *outer = new (phase->C, 3) LoopNode( ctl, _head->in(outer_idx) ); | 1166 Node *outer = new (phase->C, 3) LoopNode( ctl, _head->in(outer_idx) ); |
1167 outer = igvn.register_new_node_with_optimizer(outer, _head); | 1167 outer = igvn.register_new_node_with_optimizer(outer, _head); |
1168 phase->set_created_loop_node(); | 1168 phase->set_created_loop_node(); |
1169 | 1169 |
1170 Node* pred = phase->clone_loop_predicates(ctl, outer, true); | |
1171 // Outermost loop falls into '_head' loop | 1170 // Outermost loop falls into '_head' loop |
1172 _head->set_req(LoopNode::EntryControl, pred); | 1171 _head->set_req(LoopNode::EntryControl, outer); |
1173 _head->del_req(outer_idx); | 1172 _head->del_req(outer_idx); |
1174 // Split all the Phis up between '_head' loop and 'outer' loop. | 1173 // Split all the Phis up between '_head' loop and 'outer' loop. |
1175 for (DUIterator_Fast jmax, j = _head->fast_outs(jmax); j < jmax; j++) { | 1174 for (DUIterator_Fast jmax, j = _head->fast_outs(jmax); j < jmax; j++) { |
1176 Node *out = _head->fast_out(j); | 1175 Node *out = _head->fast_out(j); |
1177 if( out->is_Phi() ) { | 1176 if( out->is_Phi() ) { |