// RUN: %clang_cc1 -no-opaque-pointers -Wno-int-conversion -triple i386-unknown-unknown %s -emit-llvm -o - | FileCheck %s -check-prefixes=CHECK,NULL-INVALID
// RUN: %clang_cc1 -no-opaque-pointers -Wno-int-conversion -triple i386-unknown-unknown %s -emit-llvm -fno-delete-null-pointer-checks -o - | FileCheck %s -check-prefixes=CHECK,NULL-VALID
int ;
// Extremely basic VLA test
void
int
int
void
void
// rdar://8403108
// CHECK-LABEL: define{{.*}} void @f_8403108
void
// pr7827
void // expected-note {{passing argument to parameter 'data' here}}
void
void
void
// rdar://8476159
static int GLOB;
int
// http://llvm.org/PR8567
// CHECK-LABEL: define{{.*}} double @test_PR8567
double
int
// rdar://11485774
void
void
// Follow gcc's behavior for VLAs in parameter lists. PR9559.
void
// Make sure we emit dereferenceable or nonnull when the static keyword is
// provided.
void
// CHECK: define{{.*}} void @test8(i32* noundef align 4 dereferenceable(12) %a)
void
// NULL-INVALID: define{{.*}} void @test9(i32 noundef %n, i32* noundef nonnull align 4 %a)
// NULL-VALID: define{{.*}} void @test9(i32 noundef %n, i32* noundef align 4 %a)
// Make sure a zero-sized static array extent is still required to be nonnull.
void
// NULL-INVALID: define{{.*}} void @test10(i32* noundef nonnull align 4 %a)
// NULL-VALID: define{{.*}} void @test10(i32* noundef align 4 %a)
const int constant = 32;
// CHECK: define {{.*}}pr44406(
int