< prev index next >

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.amd64/src/org/graalvm/compiler/hotspot/amd64/AMD64HotSpotAddressLowering.java

Print this page

        

*** 197,207 **** InductionVariable inductionVariable = ivs.get(input); if (inductionVariable != null && inductionVariable instanceof BasicInductionVariable) { CountedLoopInfo countedLoopInfo = loop.counted(); IntegerStamp initStamp = (IntegerStamp) inductionVariable.initNode().stamp(NodeView.DEFAULT); if (initStamp.isPositive()) { ! if (inductionVariable.isConstantExtremum()) { long init = inductionVariable.constantInit(); long stride = inductionVariable.constantStride(); long extremum = inductionVariable.constantExtremum(); if (init >= 0 && extremum >= 0) { --- 197,207 ---- InductionVariable inductionVariable = ivs.get(input); if (inductionVariable != null && inductionVariable instanceof BasicInductionVariable) { CountedLoopInfo countedLoopInfo = loop.counted(); IntegerStamp initStamp = (IntegerStamp) inductionVariable.initNode().stamp(NodeView.DEFAULT); if (initStamp.isPositive()) { ! if (inductionVariable.isConstantExtremum() && countedLoopInfo.counterNeverOverflows()) { long init = inductionVariable.constantInit(); long stride = inductionVariable.constantStride(); long extremum = inductionVariable.constantExtremum(); if (init >= 0 && extremum >= 0) {
*** 209,219 **** if (countedLoopInfo.constantMaxTripCount().equals(shortestTrip)) { return graph.unique(new ZeroExtendNode(input, INT_BITS, ADDRESS_BITS, true)); } } } ! if (countedLoopInfo.getCounter() == inductionVariable && inductionVariable.direction() == InductionVariable.Direction.Up && countedLoopInfo.getOverFlowGuard() != null) { return graph.unique(new ZeroExtendNode(input, INT_BITS, ADDRESS_BITS, true)); } } } } --- 209,221 ---- if (countedLoopInfo.constantMaxTripCount().equals(shortestTrip)) { return graph.unique(new ZeroExtendNode(input, INT_BITS, ADDRESS_BITS, true)); } } } ! if (countedLoopInfo.getCounter() == inductionVariable && ! inductionVariable.direction() == InductionVariable.Direction.Up && ! (countedLoopInfo.getOverFlowGuard() != null || countedLoopInfo.counterNeverOverflows())) { return graph.unique(new ZeroExtendNode(input, INT_BITS, ADDRESS_BITS, true)); } } } }
< prev index next >