Index: src/IceTargetLoweringX86Base.h |
diff --git a/src/IceTargetLoweringX86Base.h b/src/IceTargetLoweringX86Base.h |
index 32c3e3bc5f4fdb860dcdc70b0e52489ab4043632..eb4eedd4a056b38a279e4a576a5547e5523d2118 100644 |
--- a/src/IceTargetLoweringX86Base.h |
+++ b/src/IceTargetLoweringX86Base.h |
@@ -92,6 +92,10 @@ public: |
return Utils::applyAlignment(typeWidthInBytes(Ty), WordSizeInBytes); |
} |
+ bool shouldSplitToVariable64On32(Type Ty) const override { |
+ return Traits::Is64Bit ? false : Ty == IceType_i64; |
+ } |
+ |
SizeT getMinJumpTableSize() const override { return 4; } |
void emitVariable(const Variable *Var) const override; |
@@ -104,21 +108,6 @@ public: |
void emit(const ConstantDouble *C) const final; |
void initNodeForLowering(CfgNode *Node) override; |
- /// x86-32: Ensure that a 64-bit Variable has been split into 2 32-bit |
- /// Variables, creating them if necessary. This is needed for all I64 |
- /// operations, and it is needed for pushing F64 arguments for function calls |
- /// using the 32-bit push instruction (though the latter could be done by |
- /// directly writing to the stack). |
- /// |
- /// x86-64: Complains loudly if invoked because the cpu can handle 64-bit |
- /// types natively. |
- template <typename T = Traits> |
- typename std::enable_if<!T::Is64Bit, void>::type split64(Variable *Var); |
- template <typename T = Traits> |
- typename std::enable_if<T::Is64Bit, void>::type split64(Variable *) { |
- llvm::report_fatal_error( |
- "Hey, yo! This is x86-64. Watcha doin'? (split64)"); |
- } |
template <typename T = Traits> |
typename std::enable_if<!T::Is64Bit, Operand>::type * |