summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/TargetInfo.cpp
diff options
context:
space:
mode:
authorPeter Smith <peter.smith@linaro.org>2017-07-27 10:43:53 +0000
committerPeter Smith <peter.smith@linaro.org>2017-07-27 10:43:53 +0000
commit32e267538439699b09d66ce1514c2744c8256c0f (patch)
tree93f7ea04d1c0930d9355efa7a52a9c278a2fe184 /clang/lib/CodeGen/TargetInfo.cpp
parent804cbd61e6c630dd2db2164dad669bbdcd72299f (diff)
downloadbcm5719-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.cpp17
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,
OpenPOWER on IntegriCloud