| ; RUN: opt -passes=globalopt -S -o - < %s | FileCheck %s | |
| @glbl = internal global ptr null | |
| define void @test1a() { | |
| ; CHECK-LABEL: @test1a( | |
| ; CHECK-NOT: store | |
| ; CHECK-NEXT: ret void | |
| store ptr null, ptr @glbl | |
| ret void | |
| } | |
| define void @test1b(ptr %p) { | |
| ; CHECK-LABEL: @test1b( | |
| ; CHECK-NEXT: store | |
| ; CHECK-NEXT: ret void | |
| store ptr %p, ptr @glbl | |
| ret void | |
| } | |
| define void @test2() { | |
| ; CHECK-LABEL: @test2( | |
| ; CHECK: alloca i8 | |
| %txt = alloca i8 | |
| call void @foo2(ptr %txt) | |
| %call2 = call ptr @strdup(ptr %txt) | |
| store ptr %call2, ptr @glbl | |
| ret void | |
| } | |
| declare ptr @strdup(ptr) | |
| declare void @foo2(ptr) | |
| define void @test3() uwtable personality ptr @__gxx_personality_v0 { | |
| ; CHECK-LABEL: @test3( | |
| ; CHECK-NOT: bb1: | |
| ; CHECK-NOT: bb2: | |
| ; CHECK: invoke | |
| %ptr = invoke ptr @_Znwm(i64 1) | |
| to label %bb1 unwind label %bb2 | |
| bb1: | |
| store ptr %ptr, ptr @glbl | |
| unreachable | |
| bb2: | |
| %tmp1 = landingpad { ptr, i32 } | |
| cleanup | |
| resume { ptr, i32 } %tmp1 | |
| } | |
| declare i32 @__gxx_personality_v0(i32, i64, ptr, ptr) | |
| declare ptr @_Znwm(i64) |