summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST/ItaniumMangle.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/AST/ItaniumMangle.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/AST/ItaniumMangle.cpp')
-rw-r--r--clang/lib/AST/ItaniumMangle.cpp6
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)
OpenPOWER on IntegriCloud