Skip to content

Commit 9d0a251

Browse files
[GR-25937] Range check predication.
PullRequest: graal/6615
2 parents 08f24ae + c60e710 commit 9d0a251

File tree

8 files changed

+1488
-0
lines changed

8 files changed

+1488
-0
lines changed

compiler/src/org.graalvm.compiler.core.common/src/org/graalvm/compiler/core/common/GraalOptions.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,12 @@ public final class GraalOptions {
114114
@Option(help = "", type = OptionType.Debug)
115115
public static final OptionKey<Boolean> UseLoopLimitChecks = new OptionKey<>(true);
116116

117+
@Option(help = "", type = OptionType.Debug)
118+
public static final OptionKey<Boolean> LoopPredication = new OptionKey<>(true);
119+
120+
@Option(help = "", type = OptionType.Debug)
121+
public static final OptionKey<Boolean> LoopPredicationMainPath = new OptionKey<>(true);
122+
117123
// debugging settings
118124
@Option(help = "", type = OptionType.Debug)
119125
public static final OptionKey<Boolean> ZapStackOnMethodEntry = new OptionKey<>(false);

compiler/src/org.graalvm.compiler.core/src/org/graalvm/compiler/core/phases/MidTier.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
package org.graalvm.compiler.core.phases;
2626

2727
import static org.graalvm.compiler.core.common.GraalOptions.ConditionalElimination;
28+
import static org.graalvm.compiler.core.common.GraalOptions.LoopPredication;
2829
import static org.graalvm.compiler.core.common.GraalOptions.OptDeoptimizationGrouping;
2930
import static org.graalvm.compiler.core.common.GraalOptions.OptFloatingReads;
3031
import static org.graalvm.compiler.core.common.GraalOptions.PartialUnroll;
@@ -37,6 +38,7 @@
3738
import org.graalvm.compiler.loop.DefaultLoopPolicies;
3839
import org.graalvm.compiler.loop.LoopPolicies;
3940
import org.graalvm.compiler.loop.phases.LoopPartialUnrollPhase;
41+
import org.graalvm.compiler.loop.phases.LoopPredicationPhase;
4042
import org.graalvm.compiler.loop.phases.LoopSafepointEliminationPhase;
4143
import org.graalvm.compiler.nodes.spi.LoweringTool;
4244
import org.graalvm.compiler.options.OptionValues;
@@ -73,6 +75,10 @@ public MidTier(OptionValues options) {
7375
appendPhase(new IterativeConditionalEliminationPhase(canonicalizer, true));
7476
}
7577

78+
if (LoopPredication.getValue(options)) {
79+
appendPhase(new IncrementalCanonicalizerPhase<>(canonicalizer, new LoopPredicationPhase()));
80+
}
81+
7682
appendPhase(new LoopSafepointEliminationPhase());
7783

7884
appendPhase(new GuardLoweringPhase());

0 commit comments

Comments
 (0)