summaryrefslogtreecommitdiffstats
path: root/clang/lib/Basic/Targets.cpp
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2015-06-09 18:05:33 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2015-06-09 18:05:33 +0000
commit2617ea675666c85aa8353bd8afc8b6d659f33637 (patch)
treec2c35d2923f90c43d811a420589fa22beaf121d8 /clang/lib/Basic/Targets.cpp
parent0ebe35b27897f784df9239cf79d3a4b0674364e8 (diff)
downloadbcm5719-llvm-2617ea675666c85aa8353bd8afc8b6d659f33637.tar.gz
bcm5719-llvm-2617ea675666c85aa8353bd8afc8b6d659f33637.zip
[ItaniumMangle] Mangle long double as __float128 for some Power targets
GCC mangles long double like __float128 in order to support compatibility with ABI variants which had a different interpretation of long double. This fixes PR23791. llvm-svn: 239421
Diffstat (limited to 'clang/lib/Basic/Targets.cpp')
-rw-r--r--clang/lib/Basic/Targets.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp
index c0c69248458..9c559796795 100644
--- a/clang/lib/Basic/Targets.cpp
+++ b/clang/lib/Basic/Targets.cpp
@@ -992,6 +992,12 @@ public:
bool hasSjLjLowering() const override {
return true;
}
+
+ bool useFloat128ManglingForLongDouble() const override {
+ return LongDoubleWidth == 128 &&
+ LongDoubleFormat == &llvm::APFloat::PPCDoubleDouble &&
+ getTriple().isOSBinFormatELF();
+ }
};
const Builtin::Info PPCTargetInfo::BuiltinInfo[] = {
OpenPOWER on IntegriCloud