diff options
Diffstat (limited to 'test/CodeGen/mingw-long-double.c')
-rw-r--r-- | test/CodeGen/mingw-long-double.c | 36 |
1 files changed, 21 insertions, 15 deletions
diff --git a/test/CodeGen/mingw-long-double.c b/test/CodeGen/mingw-long-double.c index 1c7c31f88be3..6026c24b367d 100644 --- a/test/CodeGen/mingw-long-double.c +++ b/test/CodeGen/mingw-long-double.c @@ -1,5 +1,7 @@ // RUN: %clang_cc1 -triple i686-windows-gnu -emit-llvm -o - %s \ // RUN: | FileCheck %s --check-prefix=GNU32 +// RUN: %clang_cc1 -triple i686-windows-gnu -emit-llvm -o - %s -mms-bitfields \ +// RUN: | FileCheck %s --check-prefix=GNU32 // RUN: %clang_cc1 -triple x86_64-windows-gnu -emit-llvm -o - %s \ // RUN: | FileCheck %s --check-prefix=GNU64 // RUN: %clang_cc1 -triple x86_64-windows-msvc -emit-llvm -o - %s \ @@ -10,32 +12,36 @@ struct { long double ldb; } agggregate_LD = {}; // GNU32: %struct.anon = type { i8, x86_fp80 } -// GNU32: @agggregate_LD = global %struct.anon zeroinitializer, align 4 +// GNU32: @agggregate_LD = dso_local global %struct.anon zeroinitializer, align 4 // GNU64: %struct.anon = type { i8, x86_fp80 } -// GNU64: @agggregate_LD = global %struct.anon zeroinitializer, align 16 +// GNU64: @agggregate_LD = dso_local global %struct.anon zeroinitializer, align 16 // MSC64: %struct.anon = type { i8, double } -// MSC64: @agggregate_LD = global %struct.anon zeroinitializer, align 8 +// MSC64: @agggregate_LD = dso_local global %struct.anon zeroinitializer, align 8 long double dataLD = 1.0L; -// GNU32: @dataLD = global x86_fp80 0xK3FFF8000000000000000, align 4 -// GNU64: @dataLD = global x86_fp80 0xK3FFF8000000000000000, align 16 -// MSC64: @dataLD = global double 1.000000e+00, align 8 +// GNU32: @dataLD = dso_local global x86_fp80 0xK3FFF8000000000000000, align 4 +// GNU64: @dataLD = dso_local global x86_fp80 0xK3FFF8000000000000000, align 16 +// MSC64: @dataLD = dso_local global double 1.000000e+00, align 8 long double _Complex dataLDC = {1.0L, 1.0L}; -// GNU32: @dataLDC = global { x86_fp80, x86_fp80 } { x86_fp80 0xK3FFF8000000000000000, x86_fp80 0xK3FFF8000000000000000 }, align 4 -// GNU64: @dataLDC = global { x86_fp80, x86_fp80 } { x86_fp80 0xK3FFF8000000000000000, x86_fp80 0xK3FFF8000000000000000 }, align 16 -// MSC64: @dataLDC = global { double, double } { double 1.000000e+00, double 1.000000e+00 }, align 8 +// GNU32: @dataLDC = dso_local global { x86_fp80, x86_fp80 } { x86_fp80 0xK3FFF8000000000000000, x86_fp80 0xK3FFF8000000000000000 }, align 4 +// GNU64: @dataLDC = dso_local global { x86_fp80, x86_fp80 } { x86_fp80 0xK3FFF8000000000000000, x86_fp80 0xK3FFF8000000000000000 }, align 16 +// MSC64: @dataLDC = dso_local global { double, double } { double 1.000000e+00, double 1.000000e+00 }, align 8 long double TestLD(long double x) { return x * x; } -// GNU32: define x86_fp80 @TestLD(x86_fp80 %x) -// GNU64: define void @TestLD(x86_fp80* noalias sret %agg.result, x86_fp80*) -// MSC64: define double @TestLD(double %x) +// GNU32: define dso_local x86_fp80 @TestLD(x86_fp80 %x) +// GNU64: define dso_local void @TestLD(x86_fp80* noalias sret %agg.result, x86_fp80*) +// MSC64: define dso_local double @TestLD(double %x) long double _Complex TestLDC(long double _Complex x) { return x * x; } -// GNU32: define void @TestLDC({ x86_fp80, x86_fp80 }* noalias sret %agg.result, { x86_fp80, x86_fp80 }* byval align 4 %x) -// GNU64: define void @TestLDC({ x86_fp80, x86_fp80 }* noalias sret %agg.result, { x86_fp80, x86_fp80 }* %x) -// MSC64: define void @TestLDC({ double, double }* noalias sret %agg.result, { double, double }* %x) +// GNU32: define dso_local void @TestLDC({ x86_fp80, x86_fp80 }* noalias sret %agg.result, { x86_fp80, x86_fp80 }* byval align 4 %x) +// GNU64: define dso_local void @TestLDC({ x86_fp80, x86_fp80 }* noalias sret %agg.result, { x86_fp80, x86_fp80 }* %x) +// MSC64: define dso_local void @TestLDC({ double, double }* noalias sret %agg.result, { double, double }* %x) + +// GNU32: declare dso_local void @__mulxc3 +// GNU64: declare dso_local void @__mulxc3 +// MSC64: declare dso_local void @__muldc3 |