From 8eaa87dbc58faf5db27b74dea5b603a881aa54b5 Mon Sep 17 00:00:00 2001 From: Ulrich Weigand Date: Tue, 16 Jun 2015 15:21:47 +0000 Subject: [PATCH] [SystemZ] Mangle long double as __float128 In r239421, the mangling of long double on PowerPC Linux targets was changed to use "g" instead of "e". This same change also needs to be done for SystemZ (all targets, since we support only Linux on SystemZ anyway). This is because an old ABI variant set "long double" to a 64-bit type equivalent to "double", and the "e" mangling code is still used to refer to that old ABI for compatibility reasons. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@239822 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Basic/Targets.cpp | 4 ++++ test/CodeGenCXX/mangle-long-double.cpp | 2 ++ 2 files changed, 6 insertions(+) diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp index 3100243f3f..8975c917e7 100644 --- a/lib/Basic/Targets.cpp +++ b/lib/Basic/Targets.cpp @@ -5694,6 +5694,10 @@ public: return "vector"; return ""; } + + bool useFloat128ManglingForLongDouble() const override { + return true; + } }; const Builtin::Info SystemZTargetInfo::BuiltinInfo[] = { diff --git a/test/CodeGenCXX/mangle-long-double.cpp b/test/CodeGenCXX/mangle-long-double.cpp index 4a476fb0fd..e248c474a2 100644 --- a/test/CodeGenCXX/mangle-long-double.cpp +++ b/test/CodeGenCXX/mangle-long-double.cpp @@ -2,9 +2,11 @@ // RUN: %clang_cc1 -triple powerpc-unknown-linux-gnu %s -emit-llvm -o - | FileCheck %s --check-prefix=POWER-LINUX // RUN: %clang_cc1 -triple powerpc64-apple-darwin9 %s -emit-llvm -o - | FileCheck %s --check-prefix=POWER64-DARWIN // RUN: %clang_cc1 -triple powerpc-apple-darwin9 %s -emit-llvm -o - | FileCheck %s --check-prefix=POWER-DARWIN +// RUN: %clang_cc1 -triple s390x-unknown-linux-gnu %s -emit-llvm -o - | FileCheck %s --check-prefix=S390X-LINUX void f(long double) {} // POWER64-LINUX: _Z1fg // POWER-LINUX: _Z1fg // POWER64-DARWIN: _Z1fe // POWER-DARWIN: _Z1fe +// S390X-LINUX: _Z1fg -- 2.50.1