Index: src/IceTargetLoweringX8632.cpp |
diff --git a/src/IceTargetLoweringX8632.cpp b/src/IceTargetLoweringX8632.cpp |
index d17173984a8441303957dd6d884b12bd7c03a7f9..edd0dec73e14eee5fe8f8084dbc47c3d04766860 100644 |
--- a/src/IceTargetLoweringX8632.cpp |
+++ b/src/IceTargetLoweringX8632.cpp |
@@ -24,6 +24,7 @@ |
#include "IceRegistersX8632.h" |
#include "IceTargetLoweringX8632.def" |
#include "IceTargetLoweringX8632.h" |
+#include "IceUtils.h" |
#include "llvm/ADT/DenseMap.h" |
#include "llvm/Support/MathExtras.h" |
#include "llvm/Support/CommandLine.h" |
@@ -526,6 +527,14 @@ void TargetX8632::emitVariable(const Variable *Var, const Cfg *Func) const { |
Str << "]"; |
} |
+x86::Address TargetX8632::stackVarToAsmOperand(const Variable *Var) const { |
+ assert(!Var->hasReg()); |
+ int32_t Offset = Var->getStackOffset(); |
+ if (!hasFramePointer()) |
+ Offset += getStackAdjustment(); |
+ return x86::Address(RegX8632::getEncodedGPR(getFrameOrStackReg()), Offset); |
+} |
+ |
void TargetX8632::lowerArguments() { |
VarList &Args = Func->getArgs(); |
// The first four arguments of vector type, regardless of their |
@@ -3708,7 +3717,7 @@ bool matchOffsetBase(Variable *&Base, int32_t &Offset, const Inst *&Reason) { |
if (Var == NULL || Const == NULL || Var->getIsMultidef()) |
return false; |
int32_t MoreOffset = IsAdd ? Const->getValue() : -Const->getValue(); |
- if (WouldOverflowAdd(Offset, MoreOffset)) |
+ if (Utils::WouldOverflowAdd(Offset, MoreOffset)) |
return false; |
Base = Var; |
Offset += MoreOffset; |