Index: src/IceTargetLoweringX86BaseImpl.h |
diff --git a/src/IceTargetLoweringX86BaseImpl.h b/src/IceTargetLoweringX86BaseImpl.h |
index a6bc892ffe1b1f352accf80f243963f09aaade75..b056ea4dbf0f89e0d8c4f652370e811248af217f 100644 |
--- a/src/IceTargetLoweringX86BaseImpl.h |
+++ b/src/IceTargetLoweringX86BaseImpl.h |
@@ -5853,7 +5853,12 @@ void TargetX86Base<TraitsType>::lowerCaseCluster(const CaseCluster &Case, |
const Type PointerType = getPointerType(); |
if (RangeIndex->getType() != PointerType) { |
Index = makeReg(PointerType); |
- _movzx(Index, RangeIndex); |
+ if (RangeIndex->getType() == IceType_i64) { |
John
2016/02/29 15:34:09
How do you feel about:
if (typeSizeInByes(Pointer
|
+ assert(Traits::Is64Bit); |
+ _mov(Index, RangeIndex); // trunc |
+ } else { |
+ _movzx(Index, RangeIndex); |
+ } |
} else { |
Index = legalizeToReg(RangeIndex); |
} |