| // RUN: %clang_cc1 %s -emit-llvm -o - -verify | FileCheck %s |
| // CHECK: define void @f0() |
| // CHECK: call void @f1() |
| // CHECK: define void @f1() |
| // CHECK: define {{.*}} @f3{{\(\)|\(.*sret.*\)}} |
| struct foo { int X, Y, Z; } f3() { |
| // PR4423 - This shouldn't crash in codegen |
| void f5() { f4(42); } //expected-warning {{too many arguments}} |
| // Qualifiers on parameter types shouldn't make a difference. |
| static void f6(const float f, const float g) { |
| void f7(float f, float g) { |
| // CHECK: define void @f7(float{{.*}}, float{{.*}}) |
| // CHECK: call void @f6(float{{.*}}, float{{.*}}) |
| // PR6911 - incomplete function types |
| void f8_callback(struct Incomplete); |
| void f8_user(void (*callback)(struct Incomplete)); |
| // CHECK: define void @f8_test() |
| // CHECK: call void @f8_user({{.*}}* bitcast (void ()* @f8_callback to {{.*}}*)) |
| // CHECK: declare void @f8_user({{.*}}*) |
| // CHECK: declare void @f8_callback() |