diff options
| author | Peter Smith <peter.smith@linaro.org> | 2017-07-27 10:43:53 +0000 |
|---|---|---|
| committer | Peter Smith <peter.smith@linaro.org> | 2017-07-27 10:43:53 +0000 |
| commit | 32e267538439699b09d66ce1514c2744c8256c0f (patch) | |
| tree | 93f7ea04d1c0930d9355efa7a52a9c278a2fe184 /clang/lib/CodeGen/TargetInfo.cpp | |
| parent | 804cbd61e6c630dd2db2164dad669bbdcd72299f (diff) | |
| download | bcm5719-llvm-32e267538439699b09d66ce1514c2744c8256c0f.tar.gz bcm5719-llvm-32e267538439699b09d66ce1514c2744c8256c0f.zip | |
[CodeGen][ARM] ARM runtime helper functions are not always soft-fp
Re-commit r309257 with less precise register checks in arm-float-helpers.c
test.
llvm-svn: 309263
Diffstat (limited to 'clang/lib/CodeGen/TargetInfo.cpp')
| -rw-r--r-- | clang/lib/CodeGen/TargetInfo.cpp | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/clang/lib/CodeGen/TargetInfo.cpp b/clang/lib/CodeGen/TargetInfo.cpp index b07326e06d9..12341431ac0 100644 --- a/clang/lib/CodeGen/TargetInfo.cpp +++ b/clang/lib/CodeGen/TargetInfo.cpp @@ -5620,17 +5620,14 @@ void ARMABIInfo::setCCs() { // AAPCS apparently requires runtime support functions to be soft-float, but // that's almost certainly for historic reasons (Thumb1 not supporting VFP // most likely). It's more convenient for AAPCS16_VFP to be hard-float. - switch (getABIKind()) { - case APCS: - case AAPCS16_VFP: - if (abiCC != getLLVMDefaultCC()) + + // The Run-time ABI for the ARM Architecture section 4.1.2 requires + // AEABI-complying FP helper functions to use the base AAPCS. + // These AEABI functions are expanded in the ARM llvm backend, all the builtin + // support functions emitted by clang such as the _Complex helpers follow the + // abiCC. + if (abiCC != getLLVMDefaultCC()) BuiltinCC = abiCC; - break; - case AAPCS: - case AAPCS_VFP: - BuiltinCC = llvm::CallingConv::ARM_AAPCS; - break; - } } ABIArgInfo ARMABIInfo::classifyArgumentType(QualType Ty, |

