diff options
author | Joerg Sonnenberger <joerg@bec.de> | 2014-08-08 16:46:10 +0000 |
---|---|---|
committer | Joerg Sonnenberger <joerg@bec.de> | 2014-08-08 16:46:10 +0000 |
commit | eb8655afd353e3dd3d9e941f6338d64390e51861 (patch) | |
tree | 8c89b2aae0bd2f859cc8ba455dec5f5e0cff4b7f /llvm/lib/Target/PowerPC/PPCISelLowering.cpp | |
parent | 0013b9292d1bdd6e06b34b629b29ad5243ce615e (diff) | |
download | bcm5719-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.cpp | 8 |
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)); |