1ef072033876e295ec5d3402f8730a3ae358ad815Reid Kleckner// RUN: %clang_cc1 -mrtd -triple i386-unknown-unknown -std=c89 -emit-llvm -o - %s | FileCheck %s
2cfe9af250f466e7e38becea4428990448ae07737Roman Divacky
3cfe9af250f466e7e38becea4428990448ae07737Roman Divackyvoid baz(int arg);
4cfe9af250f466e7e38becea4428990448ae07737Roman Divacky
5c3af6799d4c8ec4b338236e4361c0795e9af890aBill Wendling// CHECK: define x86_stdcallcc void @foo(i32 %arg) [[NUW:#[0-9]+]]
6cfe9af250f466e7e38becea4428990448ae07737Roman Divackyvoid foo(int arg) {
701f151e0ffba72bcad770bea5f563a9b68ca050eJohn McCall// CHECK: call x86_stdcallcc i32 bitcast (i32 (...)* @bar to i32 (i32)*)(
8cfe9af250f466e7e38becea4428990448ae07737Roman Divacky  bar(arg);
9438d7f05d34abfdf6a8a8954a957b97275162070Douglas Gregor// CHECK: call x86_stdcallcc void @baz(i32
10cfe9af250f466e7e38becea4428990448ae07737Roman Divacky  baz(arg);
11cfe9af250f466e7e38becea4428990448ae07737Roman Divacky}
12cfe9af250f466e7e38becea4428990448ae07737Roman Divacky
13cfe9af250f466e7e38becea4428990448ae07737Roman Divacky// CHECK: declare x86_stdcallcc i32 @bar(...)
14cfe9af250f466e7e38becea4428990448ae07737Roman Divacky
15cfe9af250f466e7e38becea4428990448ae07737Roman Divacky// CHECK: declare x86_stdcallcc void @baz(i32)
16f7a9da053f5bd6c18450c1796d953b42c3b7ad3aBill Wendling
17ef072033876e295ec5d3402f8730a3ae358ad815Reid Klecknervoid qux(int arg, ...) { }
18ef072033876e295ec5d3402f8730a3ae358ad815Reid Kleckner// CHECK: define void @qux(i32 %arg, ...)
19ef072033876e295ec5d3402f8730a3ae358ad815Reid Kleckner
20ef072033876e295ec5d3402f8730a3ae358ad815Reid Klecknervoid quux(int a1, int a2, int a3) {
21ef072033876e295ec5d3402f8730a3ae358ad815Reid Kleckner  qux(a1, a2, a3);
22ef072033876e295ec5d3402f8730a3ae358ad815Reid Kleckner}
23ef072033876e295ec5d3402f8730a3ae358ad815Reid Kleckner// CHECK-LABEL: define x86_stdcallcc void @quux
24ef072033876e295ec5d3402f8730a3ae358ad815Reid Kleckner// CHECK: call void (i32, ...)* @qux
25ef072033876e295ec5d3402f8730a3ae358ad815Reid Kleckner
26c3af6799d4c8ec4b338236e4361c0795e9af890aBill Wendling// CHECK: attributes [[NUW]] = { nounwind{{.*}} }
27