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 | 162b419a02b2d855c6bdc2c193ec07a3a50b771c (patch) | |
tree | ba19e910fce50fd57e03f1dea3473352e2fc1282 /clang/test/CodeGen/microsoft-call-conv.c | |
parent | e31e36f9109a77fba5beffceedfa1f1172c669b6 (diff) | |
download | bcm5719-llvm-162b419a02b2d855c6bdc2c193ec07a3a50b771c.tar.gz bcm5719-llvm-162b419a02b2d855c6bdc2c193ec07a3a50b771c.zip |
Add missing test case, provided by Steven Watanabe.
llvm-svn: 104037
Diffstat (limited to 'clang/test/CodeGen/microsoft-call-conv.c')
-rw-r--r-- | clang/test/CodeGen/microsoft-call-conv.c | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/clang/test/CodeGen/microsoft-call-conv.c b/clang/test/CodeGen/microsoft-call-conv.c new file mode 100644 index 00000000000..95f5fa3f83b --- /dev/null +++ b/clang/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 +} |