summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/ARM/ARMISelLowering.cpp
diff options
context:
space:
mode:
authorReid Kleckner <reid@kleckner.net>2014-08-22 21:59:26 +0000
committerReid Kleckner <reid@kleckner.net>2014-08-22 21:59:26 +0000
commit2d9bb65b3dee3d84a523f043b6059bce2a4a1032 (patch)
treea39fce08ce3ce54169beeb4149fc349c91e4fc5b /llvm/lib/Target/ARM/ARMISelLowering.cpp
parentaf74250ec00c8c324109e8513030e10b480c23a3 (diff)
downloadbcm5719-llvm-2d9bb65b3dee3d84a523f043b6059bce2a4a1032.tar.gz
bcm5719-llvm-2d9bb65b3dee3d84a523f043b6059bce2a4a1032.zip
ARM / x86_64 varargs: Don't save regparms in prologue without va_start
There's no need to do this if the user doesn't call va_start. In the future, we're going to have thunks that forward these register parameters with musttail calls, and they won't need these spills for handling va_start. Most of the test suite changes are adding va_start calls to existing tests to keep things working. llvm-svn: 216294
Diffstat (limited to 'llvm/lib/Target/ARM/ARMISelLowering.cpp')
-rw-r--r--llvm/lib/Target/ARM/ARMISelLowering.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/llvm/lib/Target/ARM/ARMISelLowering.cpp b/llvm/lib/Target/ARM/ARMISelLowering.cpp
index 42c8f202e0f..f5355833a34 100644
--- a/llvm/lib/Target/ARM/ARMISelLowering.cpp
+++ b/llvm/lib/Target/ARM/ARMISelLowering.cpp
@@ -3080,7 +3080,7 @@ ARMTargetLowering::LowerFormalArguments(SDValue Chain,
}
CCInfo.rewindByValRegsInfo();
lastInsIndex = -1;
- if (isVarArg) {
+ if (isVarArg && MFI->hasVAStart()) {
unsigned ExtraArgRegsSize;
unsigned ExtraArgRegsSaveSize;
computeRegArea(CCInfo, MF, CCInfo.getInRegsParamsCount(), 0,
@@ -3222,7 +3222,7 @@ ARMTargetLowering::LowerFormalArguments(SDValue Chain,
}
// varargs
- if (isVarArg)
+ if (isVarArg && MFI->hasVAStart())
VarArgStyleRegisters(CCInfo, DAG, dl, Chain,
CCInfo.getNextStackOffset(),
TotalArgRegsSaveSize);
OpenPOWER on IntegriCloud