1 // RUN: %clang_cc1 %s -triple i386-unknown-unknown -Wno-strict-prototypes -emit-llvm -o - -verify | FileCheck %s
19 // CHECK-LABEL: define{{.*}} void @f0()
23 // CHECK: call void @f1()
26 // CHECK-LABEL: define{{.*}} void @f1()
29 // CHECK: define {{.*}} @f3{{\(\)|\(.*sret.*\)}}
30 struct foo
{ int X
, Y
, Z
; } f3(void) {
34 // PR4423 - This shouldn't crash in codegen
36 void f5(void) { f4(42); } //expected-warning {{too many arguments}}
38 // Qualifiers on parameter types shouldn't make a difference.
39 static void f6(const float f
, const float g
) {
41 void f7(float f
, float g
) {
43 // CHECK: define{{.*}} void @f7(float{{.*}}, float{{.*}})
44 // CHECK: call void @f6(float{{.*}}, float{{.*}})
47 // PR6911 - incomplete function types
49 void f8_callback(struct Incomplete
);
50 void f8_user(void (*callback
)(struct Incomplete
));
52 f8_user(&f8_callback
);
53 // CHECK-LABEL: define{{.*}} void @f8_test()
54 // CHECK: call void @f8_user(ptr noundef @f8_callback)
55 // CHECK: declare void @f8_user(ptr noundef)
56 // CHECK: declare void @f8_callback()
59 // PR10204: don't crash
60 static void test9_helper(void) {}
65 // PR88917: don't crash
70 // CHECK: call i32 @b(ptr noundef @b)
75 // CHECK-LABEL: define{{.*}} i32 @b(ptr noundef %f)