xref: /aosp_15_r20/external/clang/test/CodeGen/mrtd.c (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: %clang_cc1 -mrtd -triple i386-unknown-unknown -std=c89 -emit-llvm -o - %s 2>&1 | FileCheck %s
2*67e74705SXin Li 
3*67e74705SXin Li // CHECK: mrtd.c:10:3: warning: function with no prototype cannot use the stdcall calling convention
4*67e74705SXin Li 
5*67e74705SXin Li void baz(int arg);
6*67e74705SXin Li 
7*67e74705SXin Li // CHECK: define x86_stdcallcc void @foo(i32 %arg) [[NUW:#[0-9]+]]
foo(int arg)8*67e74705SXin Li void foo(int arg) {
9*67e74705SXin Li // CHECK: call x86_stdcallcc i32 bitcast (i32 (...)* @bar to i32 (i32)*)(
10*67e74705SXin Li   bar(arg);
11*67e74705SXin Li // CHECK: call x86_stdcallcc void @baz(i32
12*67e74705SXin Li   baz(arg);
13*67e74705SXin Li }
14*67e74705SXin Li 
15*67e74705SXin Li // CHECK: declare x86_stdcallcc i32 @bar(...)
16*67e74705SXin Li 
17*67e74705SXin Li // CHECK: declare x86_stdcallcc void @baz(i32)
18*67e74705SXin Li 
qux(int arg,...)19*67e74705SXin Li void qux(int arg, ...) { }
20*67e74705SXin Li // CHECK: define void @qux(i32 %arg, ...)
21*67e74705SXin Li 
quux(int a1,int a2,int a3)22*67e74705SXin Li void quux(int a1, int a2, int a3) {
23*67e74705SXin Li   qux(a1, a2, a3);
24*67e74705SXin Li }
25*67e74705SXin Li // CHECK-LABEL: define x86_stdcallcc void @quux
26*67e74705SXin Li // CHECK: call void (i32, ...) @qux
27*67e74705SXin Li 
28*67e74705SXin Li // CHECK: attributes [[NUW]] = { nounwind{{.*}} }
29