Index: src/IceTargetLoweringX86Base.h |
diff --git a/src/IceTargetLoweringX86Base.h b/src/IceTargetLoweringX86Base.h |
index ff9274f96a319042b178eb52ee8e62e70d99abd8..5a597b32e1b14b06a875e02a67686f23eeb2de8f 100644 |
--- a/src/IceTargetLoweringX86Base.h |
+++ b/src/IceTargetLoweringX86Base.h |
@@ -197,9 +197,11 @@ protected: |
} |
void lowerAlloca(const InstAlloca *Inst) override; |
+ void lowerArguments() override; |
void lowerArithmetic(const InstArithmetic *Inst) override; |
void lowerAssign(const InstAssign *Inst) override; |
void lowerBr(const InstBr *Inst) override; |
+ void lowerCall(const InstCall *Inst) override; |
void lowerCast(const InstCast *Inst) override; |
void lowerExtractElement(const InstExtractElement *Inst) override; |
void lowerFcmp(const InstFcmp *Inst) override; |
@@ -209,6 +211,7 @@ protected: |
void lowerInsertElement(const InstInsertElement *Inst) override; |
void lowerLoad(const InstLoad *Inst) override; |
void lowerPhi(const InstPhi *Inst) override; |
+ void lowerRet(const InstRet *Inst) override; |
void lowerSelect(const InstSelect *Inst) override; |
void lowerStore(const InstStore *Inst) override; |
void lowerSwitch(const InstSwitch *Inst) override; |
@@ -279,6 +282,13 @@ protected: |
void scalarizeArithmetic(InstArithmetic::OpKind K, Variable *Dest, |
Operand *Src0, Operand *Src1); |
+ /// Emit just the call instruction (without argument or return variable |
+ /// processing), sandboxing if needed. |
+ virtual Inst *emitCallToTarget(Operand *CallTarget, Variable *ReturnReg) = 0; |
+ /// Materialize the moves needed to return a value of the specified type. |
+ virtual Variable *moveReturnValueToRegister(Operand *Value, |
+ const Type ReturnType) = 0; |
Jim Stichnoth
2016/01/19 20:54:05
I find it a bit odd/unusual to declare a scalar pa
sehr
2016/01/19 21:47:35
Done.
|
+ |
/// Emit a fake use of esp to make sure esp stays alive for the entire |
/// function. Otherwise some esp adjustments get dead-code eliminated. |
void keepEspLiveAtExit() { |