1*9880d681SAndroid Build Coastguard Worker; RUN: opt -globalopt -S -o - < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker@glbl = internal global i8* null 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Workerdefine void @test1a() { 6*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @test1a( 7*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: store 8*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret void 9*9880d681SAndroid Build Coastguard Worker store i8* null, i8** @glbl 10*9880d681SAndroid Build Coastguard Worker ret void 11*9880d681SAndroid Build Coastguard Worker} 12*9880d681SAndroid Build Coastguard Worker 13*9880d681SAndroid Build Coastguard Workerdefine void @test1b(i8* %p) { 14*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @test1b( 15*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: store 16*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret void 17*9880d681SAndroid Build Coastguard Worker store i8* %p, i8** @glbl 18*9880d681SAndroid Build Coastguard Worker ret void 19*9880d681SAndroid Build Coastguard Worker} 20*9880d681SAndroid Build Coastguard Worker 21*9880d681SAndroid Build Coastguard Workerdefine void @test2() { 22*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @test2( 23*9880d681SAndroid Build Coastguard Worker; CHECK: alloca i8 24*9880d681SAndroid Build Coastguard Worker %txt = alloca i8 25*9880d681SAndroid Build Coastguard Worker call void @foo2(i8* %txt) 26*9880d681SAndroid Build Coastguard Worker %call2 = call i8* @strdup(i8* %txt) 27*9880d681SAndroid Build Coastguard Worker store i8* %call2, i8** @glbl 28*9880d681SAndroid Build Coastguard Worker ret void 29*9880d681SAndroid Build Coastguard Worker} 30*9880d681SAndroid Build Coastguard Workerdeclare i8* @strdup(i8*) 31*9880d681SAndroid Build Coastguard Workerdeclare void @foo2(i8*) 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Workerdefine void @test3() uwtable personality i32 (i32, i64, i8*, i8*)* @__gxx_personality_v0 { 34*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @test3( 35*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: bb1: 36*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: bb2: 37*9880d681SAndroid Build Coastguard Worker; CHECK: invoke 38*9880d681SAndroid Build Coastguard Worker %ptr = invoke i8* @_Znwm(i64 1) 39*9880d681SAndroid Build Coastguard Worker to label %bb1 unwind label %bb2 40*9880d681SAndroid Build Coastguard Workerbb1: 41*9880d681SAndroid Build Coastguard Worker store i8* %ptr, i8** @glbl 42*9880d681SAndroid Build Coastguard Worker unreachable 43*9880d681SAndroid Build Coastguard Workerbb2: 44*9880d681SAndroid Build Coastguard Worker %tmp1 = landingpad { i8*, i32 } 45*9880d681SAndroid Build Coastguard Worker cleanup 46*9880d681SAndroid Build Coastguard Worker resume { i8*, i32 } %tmp1 47*9880d681SAndroid Build Coastguard Worker} 48*9880d681SAndroid Build Coastguard Workerdeclare i32 @__gxx_personality_v0(i32, i64, i8*, i8*) 49*9880d681SAndroid Build Coastguard Workerdeclare i8* @_Znwm(i64) 50