Index: src/IceTargetLoweringX8632.cpp |
diff --git a/src/IceTargetLoweringX8632.cpp b/src/IceTargetLoweringX8632.cpp |
index 2ecd77de3ce721bc02e823d0bc64e2e3451402bd..52ba7b5aa41e42630c9a5d1f75dd0fbba8f69552 100644 |
--- a/src/IceTargetLoweringX8632.cpp |
+++ b/src/IceTargetLoweringX8632.cpp |
@@ -151,8 +151,10 @@ void TargetX8632::lowerCall(const InstCall *Instr) { |
Variable *esp = |
Func->getTarget()->getPhysicalRegister(Traits::RegisterSet::Reg_esp); |
Constant *Loc = Ctx->getConstantInt32(ParameterAreaSizeBytes); |
- StackArgLocations.push_back( |
- Traits::X86OperandMem::create(Func, Ty, esp, Loc)); |
+ auto *Mem = Traits::X86OperandMem::create(Func, Ty, esp, Loc); |
+ // Stack stores for arguments are fixed to esp. |
+ Mem->setIgnoreStackAdjust(true); |
+ StackArgLocations.push_back(Mem); |
ParameterAreaSizeBytes += typeWidthInBytesOnStack(Arg->getType()); |
} |
} |