summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/PowerPC/PPCISelLowering.cpp
diff options
context:
space:
mode:
authorJoerg Sonnenberger <joerg@bec.de>2014-08-08 16:46:10 +0000
committerJoerg Sonnenberger <joerg@bec.de>2014-08-08 16:46:10 +0000
commiteb8655afd353e3dd3d9e941f6338d64390e51861 (patch)
tree8c89b2aae0bd2f859cc8ba455dec5f5e0cff4b7f /llvm/lib/Target/PowerPC/PPCISelLowering.cpp
parent0013b9292d1bdd6e06b34b629b29ad5243ce615e (diff)
downloadbcm5719-llvm-eb8655afd353e3dd3d9e941f6338d64390e51861.tar.gz
bcm5719-llvm-eb8655afd353e3dd3d9e941f6338d64390e51861.zip
Add low-level option for avoiding float stores from va_start until
soft-float is properly supported. llvm-svn: 215221
Diffstat (limited to 'llvm/lib/Target/PowerPC/PPCISelLowering.cpp')
-rw-r--r--llvm/lib/Target/PowerPC/PPCISelLowering.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/llvm/lib/Target/PowerPC/PPCISelLowering.cpp b/llvm/lib/Target/PowerPC/PPCISelLowering.cpp
index 36e1e1334e5..085318cc5a5 100644
--- a/llvm/lib/Target/PowerPC/PPCISelLowering.cpp
+++ b/llvm/lib/Target/PowerPC/PPCISelLowering.cpp
@@ -39,6 +39,10 @@
#include "llvm/Target/TargetOptions.h"
using namespace llvm;
+// FIXME: Remove this once soft-float is supported.
+static cl::opt<bool> DisablePPCFloatInVariadic("disable-ppc-float-in-variadic",
+cl::desc("disable saving float registers for va_start on PPC"), cl::Hidden);
+
static cl::opt<bool> DisablePPCPreinc("disable-ppc-preinc",
cl::desc("disable preincrement load/store generation on PPC"), cl::Hidden);
@@ -2494,7 +2498,9 @@ PPCTargetLowering::LowerFormalArguments_32SVR4(
PPC::F1, PPC::F2, PPC::F3, PPC::F4, PPC::F5, PPC::F6, PPC::F7,
PPC::F8
};
- const unsigned NumFPArgRegs = array_lengthof(FPArgRegs);
+ unsigned NumFPArgRegs = array_lengthof(FPArgRegs);
+ if (DisablePPCFloatInVariadic)
+ NumFPArgRegs = 0;
FuncInfo->setVarArgsNumGPR(CCInfo.getFirstUnallocated(GPArgRegs,
NumGPArgRegs));
OpenPOWER on IntegriCloud