Author: chh Date: Fri Jul 24 13:12:54 2015 New Revision: 243133 URL: http://llvm.org/viewvc/llvm-project?rev=243133&view=rev Log: Correct x86_64 Android fp128 mangled name
These changes are for Android x86_64 targets to be compatible with current Android g++. https://llvm.org/bugs/show_bug.cgi?id=23897 Use 'g' and 'Cg' for "long double" and "long double _Complex" mangled type names. Differential Revision: http://reviews.llvm.org/D11466 Added: cfe/trunk/test/CodeGen/long_double_fp128.cpp Modified: cfe/trunk/lib/Basic/Targets.cpp Modified: cfe/trunk/lib/Basic/Targets.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets.cpp?rev=243133&r1=243132&r2=243133&view=diff ============================================================================== --- cfe/trunk/lib/Basic/Targets.cpp (original) +++ cfe/trunk/lib/Basic/Targets.cpp Fri Jul 24 13:12:54 2015 @@ -7071,6 +7071,10 @@ public: : LinuxTargetInfo<X86_64TargetInfo>(Triple) { LongDoubleFormat = &llvm::APFloat::IEEEquad; } + + bool useFloat128ManglingForLongDouble() const override { + return true; + } }; } // end anonymous namespace Added: cfe/trunk/test/CodeGen/long_double_fp128.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/long_double_fp128.cpp?rev=243133&view=auto ============================================================================== --- cfe/trunk/test/CodeGen/long_double_fp128.cpp (added) +++ cfe/trunk/test/CodeGen/long_double_fp128.cpp Fri Jul 24 13:12:54 2015 @@ -0,0 +1,22 @@ +// RUN: %clang_cc1 -triple x86_64-linux-android -emit-llvm -o - %s \ +// RUN: | FileCheck %s --check-prefix=A64 +// RUN: %clang_cc1 -triple x86_64-linux-gnu -emit-llvm -o - %s \ +// RUN: | FileCheck %s --check-prefix=G64 +// RUN: %clang_cc1 -triple powerpc64-linux-gnu -emit-llvm -o - %s \ +// RUN: | FileCheck %s --check-prefix=P64 +// RUN: %clang_cc1 -triple i686-linux-android -emit-llvm -o - %s \ +// RUN: | FileCheck %s --check-prefix=A32 +// RUN: %clang_cc1 -triple i686-linux-gnu -emit-llvm -o - %s \ +// RUN: | FileCheck %s --check-prefix=G32 +// RUN: %clang_cc1 -triple powerpc-linux-gnu -emit-llvm -o - %s \ +// RUN: | FileCheck %s --check-prefix=P32 + +// Check mangled name of long double. +// Android's gcc and llvm use fp128 for long double. +void test(long, float, double, long double, long double _Complex) { } +// A64: define void @_Z4testlfdgCg(i64, float, double, fp128, { fp128, fp128 }* +// G64: define void @_Z4testlfdeCe(i64, float, double, x86_fp80, { x86_fp80, x86_fp80 }* +// P64: define void @_Z4testlfdgCg(i64, float, double, ppc_fp128, ppc_fp128 {{.*}}, ppc_fp128 +// A32: define void @_Z4testlfdeCe(i32, float, double, double, { double, double }* +// G32: define void @_Z4testlfdeCe(i32, float, double, x86_fp80, { x86_fp80, x86_fp80 }* +// P32: define void @_Z4testlfdgCg(i32, float, double, ppc_fp128, { ppc_fp128, ppc_fp128 }* _______________________________________________ cfe-commits mailing list cfe-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits