1226 up = sub->find_exact_control(up); |
1226 up = sub->find_exact_control(up); |
1227 // If sub == up, we found a self-loop. Try to push past it. |
1227 // If sub == up, we found a self-loop. Try to push past it. |
1228 if (sub == up && sub->is_Loop()) { |
1228 if (sub == up && sub->is_Loop()) { |
1229 // Take loop entry path on the way up to 'dom'. |
1229 // Take loop entry path on the way up to 'dom'. |
1230 up = sub->in(1); // in(LoopNode::EntryControl); |
1230 up = sub->in(1); // in(LoopNode::EntryControl); |
1231 } else if (sub == up && sub->is_Region() && sub->req() != 3) { |
1231 } else if (sub == up && sub->is_Region() && sub->req() == 2) { |
1232 // Always take in(1) path on the way up to 'dom' for clone regions |
1232 // Take in(1) path on the way up to 'dom' for regions with only one input |
1233 // (with only one input) or regions which merge > 2 paths |
|
1234 // (usually used to merge fast/slow paths). |
|
1235 up = sub->in(1); |
1233 up = sub->in(1); |
1236 } else if (sub == up && sub->is_Region()) { |
1234 } else if (sub == up && sub->is_Region() && sub->req() == 3) { |
1237 // Try both paths for Regions with 2 input paths (it may be a loop head). |
1235 // Try both paths for Regions with 2 input paths (it may be a loop head). |
1238 // It could give conservative 'false' answer without information |
1236 // It could give conservative 'false' answer without information |
1239 // which region's input is the entry path. |
1237 // which region's input is the entry path. |
1240 iterations_without_region_limit = DominatorSearchLimit; // Reset |
1238 iterations_without_region_limit = DominatorSearchLimit; // Reset |
1241 |
1239 |