diff options
author | David Majnemer <david.majnemer@gmail.com> | 2015-06-09 18:05:33 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2015-06-09 18:05:33 +0000 |
commit | 2617ea675666c85aa8353bd8afc8b6d659f33637 (patch) | |
tree | c2c35d2923f90c43d811a420589fa22beaf121d8 /clang/lib/Basic/Targets.cpp | |
parent | 0ebe35b27897f784df9239cf79d3a4b0674364e8 (diff) | |
download | bcm5719-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.cpp | 6 |
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[] = { |