diff options
author | Douglas Gregor <dgregor@apple.com> | 2010-05-18 17:43:51 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2010-05-18 17:43:51 +0000 |
commit | d1808f380aed0fa19573909ada3e26233c80f87c (patch) | |
tree | 1cb0b6b2ec1b2f1eaf4cc341ab0fb81c1dbabbfb | |
parent | a1d1c7555ce3fd86eb66ab3e651af54900bc5800 (diff) |
Add missing test case, provided by Steven Watanabe.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104037 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | test/CodeGen/microsoft-call-conv.c | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/test/CodeGen/microsoft-call-conv.c b/test/CodeGen/microsoft-call-conv.c new file mode 100644 index 0000000000..95f5fa3f83 --- /dev/null +++ b/test/CodeGen/microsoft-call-conv.c @@ -0,0 +1,50 @@ +// RUN: %clang_cc1 -emit-llvm < %s | FileCheck %s + +void __fastcall f1(void); +void __stdcall f2(void); +void __thiscall f3(void); +void __fastcall f4(void) { +// CHECK: define x86_fastcallcc void @f4() + f1(); +// CHECK: call x86_fastcallcc void @f1() +} +void __stdcall f5(void) { +// CHECK: define x86_stdcallcc void @f5() + f2(); +// CHECK: call x86_stdcallcc void @f2() +} +void __thiscall f6(void) { +// CHECK: define x86_thiscallcc void @f6() + f3(); +// CHECK: call x86_thiscallcc void @f3() +} + +// PR5280 +void (__fastcall *pf1)(void) = f1; +void (__stdcall *pf2)(void) = f2; +void (__thiscall *pf3)(void) = f3; +void (__fastcall *pf4)(void) = f4; +void (__stdcall *pf5)(void) = f5; +void (__thiscall *pf6)(void) = f6; + +int main(void) { + f4(); f5(); f6(); + // CHECK: call x86_fastcallcc void @f4() + // CHECK: call x86_stdcallcc void @f5() + // CHECK: call x86_thiscallcc void @f6() + pf1(); pf2(); pf3(); pf4(); pf5(); pf6(); + // CHECK: call x86_fastcallcc void %{{.*}}() + // CHECK: call x86_stdcallcc void %{{.*}}() + // CHECK: call x86_thiscallcc void %{{.*}}() + // CHECK: call x86_fastcallcc void %{{.*}}() + // CHECK: call x86_stdcallcc void %{{.*}}() + // CHECK: call x86_thiscallcc void %{{.*}}() + return 0; +} + +// PR7117 +void __stdcall f7(foo) int foo; {} +void f8(void) { + f7(0); + // CHECK: call x86_stdcallcc void (...)* bitcast +} |