// RUN: %clang_cc1 -no-opaque-pointers -triple x86_64-apple-darwin10.0.0 -fblocks -emit-llvm -o - %s -fexceptions -std=c++11 | FileCheck %s
// CHECK-NOT: @unused
auto unused = ;
// CHECK: @used = internal global
auto used = ;
void *use = &used;
// CHECK: @cvar ={{.*}} global
extern "C" auto cvar = ;
// CHECK-LABEL: define{{.*}} i32 @_Z9ARBSizeOfi(i32
int
// CHECK-LABEL: define internal noundef i32 @"_ZZ9ARBSizeOfiENK3$_0clEv"
int
// CHECK-LABEL: define{{.*}} i32 @_Z1av
// CHECK: call noundef i32 @"_ZZ1avENK3$_1clEv"
// CHECK-LABEL: define internal noundef i32 @"_ZZ1avENK3$_1clEv"
// CHECK: ret i32 1
int
// CHECK-LABEL: define{{.*}} i32 @_Z1bi
// CHECK: store i32
// CHECK: load i32, i32*
// CHECK: store i32
// CHECK: call noundef i32 @"_ZZ1biENK3$_2clEv"
// CHECK-LABEL: define internal noundef i32 @"_ZZ1biENK3$_2clEv"
// CHECK: load i32, i32*
// CHECK: ret i32
int
// CHECK-LABEL: define{{.*}} i32 @_Z1ci
// CHECK: store i32
// CHECK: store i32*
// CHECK: call noundef i32 @"_ZZ1ciENK3$_3clEv"
// CHECK-LABEL: define internal noundef i32 @"_ZZ1ciENK3$_3clEv"
// CHECK: load i32*, i32**
// CHECK: load i32, i32*
// CHECK: ret i32
;
int
// CHECK-LABEL: define{{.*}} i32 @_Z1di
// CHECK: call void @_ZN1DC1Ev
// CHECK: br label
// CHECK: call void @_ZN1DC1ERKS_
// CHECK: icmp eq i64 %{{.*}}, 10
// CHECK: br i1
// CHECK: call noundef i32 @"_ZZ1diENK3$_4clEv"
// CHECK-LABEL: define internal noundef i32 @"_ZZ1diENK3$_4clEv"
// CHECK: load i32, i32*
// CHECK: load i32, i32*
// CHECK: ret i32
;
int
// CHECK-LABEL: define{{.*}} i32 @_Z1e1ES_b
// CHECK: call void @_ZN1EC1ERKS_
// CHECK: invoke void @_ZN1EC1ERKS_
// CHECK: invoke noundef i32 @"_ZZ1e1ES_bENK3$_5clEv"
// CHECK: call void @"_ZZ1e1ES_bEN3$_5D1Ev"
// CHECK: call void @"_ZZ1e1ES_bEN3$_5D1Ev"
// CHECK-LABEL: define internal noundef i32 @"_ZZ1e1ES_bENK3$_5clEv"
// CHECK: trunc i8
// CHECK: load i32, i32*
// CHECK: ret i32
void
static int k;
int ;
// PR14773
// CHECK: [[ARRVAL:%[0-9a-zA-Z]*]] = load i32, i32* getelementptr inbounds ([0 x i32], [0 x i32]* @_ZZ14staticarrayrefvE5array, i64 0, i64 0), align 4
// CHECK-NEXT: store i32 [[ARRVAL]]
void
// CHECK-LABEL: define internal noundef i32* @"_ZZ11PR22071_funvENK3$_9clEv"
// CHECK: ret i32* @PR22071_var
int PR22071_var;
int *
// CHECK-LABEL: define internal void @"_ZZ1e1ES_bEN3$_5D2Ev"
// CHECK-LABEL: define internal noundef i32 @"_ZZ1fvEN3$_68__invokeEii"
// CHECK: store i32
// CHECK-NEXT: store i32
// CHECK-NEXT: load i32, i32*
// CHECK-NEXT: load i32, i32*
// CHECK-NEXT: call noundef i32 @"_ZZ1fvENK3$_6clEii"
// CHECK-NEXT: ret i32
// CHECK-LABEL: define internal void @"_ZZ1hvEN4$_118__invokeEv"(%struct.A* noalias sret(%struct.A) align 1 %agg.result) {{.*}} {
// CHECK: call void @"_ZZ1hvENK4$_11clEv"(%struct.A* sret(%struct.A) align 1 %agg.result,
// CHECK-NEXT: ret void
;
void
// <rdar://problem/12778708>
;
void
// Ensure we don't assert here.
capture_array_and_this;