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/AST/ItaniumMangle.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/AST/ItaniumMangle.cpp')
-rw-r--r-- | clang/lib/AST/ItaniumMangle.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/clang/lib/AST/ItaniumMangle.cpp b/clang/lib/AST/ItaniumMangle.cpp index d07efaee7bb..968f0308b67 100644 --- a/clang/lib/AST/ItaniumMangle.cpp +++ b/clang/lib/AST/ItaniumMangle.cpp @@ -2010,7 +2010,11 @@ void CXXNameMangler::mangleType(const BuiltinType *T) { case BuiltinType::Half: Out << "Dh"; break; case BuiltinType::Float: Out << 'f'; break; case BuiltinType::Double: Out << 'd'; break; - case BuiltinType::LongDouble: Out << 'e'; break; + case BuiltinType::LongDouble: + Out << (getASTContext().getTargetInfo().useFloat128ManglingForLongDouble() + ? 'g' + : 'e'); + break; case BuiltinType::NullPtr: Out << "Dn"; break; #define BUILTIN_TYPE(Id, SingletonId) |