According to i686 ABI, long double size on x86 is 12 bytes not 16 bytes.

See
 https://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/i386-and-x86-64-Options.html

llvm-svn: 245459
This commit is contained in:
Yaron Keren 2015-08-19 17:02:32 +00:00
parent e1292f8e4e
commit 7890a01263
2 changed files with 7 additions and 1 deletions

View File

@ -3785,7 +3785,8 @@ class MinGWX86_32TargetInfo : public WindowsX86_32TargetInfo {
public:
MinGWX86_32TargetInfo(const llvm::Triple &Triple)
: WindowsX86_32TargetInfo(Triple) {
LongDoubleWidth = LongDoubleAlign = 128;
LongDoubleWidth = 96;
LongDoubleAlign = 128;
LongDoubleFormat = &llvm::APFloat::x87DoubleExtended;
}
void getTargetDefines(const LangOptions &Opts,

View File

@ -0,0 +1,5 @@
// RUN: %clang_cc1 -triple i686-pc-windows-gnu -S %s -o - | FileCheck %s -check-prefix=CHECK_I686
// CHECK_I686: lda,12
// RUN: %clang_cc1 -triple x86_64-pc-windows-gnu -S %s -o - | FileCheck %s -check-prefix=CHECK_X86_64
// CHECK_X86_64: lda,16
long double lda;