X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=test%2FTransforms%2FGlobalOpt%2Fcleanup-pointer-root-users.ll;h=16da5315db0c3f17516c87feb43b48897873a2f7;hb=6cd07b45e172b457428b291fa28252e507a7c50c;hp=0d5cbf533303268dfbfbd0f8954243b689eaff17;hpb=61e2ff8f821beec2eefdbb21a5954f74b1c0a295;p=oota-llvm.git diff --git a/test/Transforms/GlobalOpt/cleanup-pointer-root-users.ll b/test/Transforms/GlobalOpt/cleanup-pointer-root-users.ll index 0d5cbf53330..16da5315db0 100644 --- a/test/Transforms/GlobalOpt/cleanup-pointer-root-users.ll +++ b/test/Transforms/GlobalOpt/cleanup-pointer-root-users.ll @@ -1,20 +1,49 @@ ; RUN: opt -globalopt -S -o - < %s | FileCheck %s -@test1 = internal global i8* null +@glbl = internal global i8* null define void @test1a() { -; CHECK: @test1a +; CHECK-LABEL: @test1a( ; CHECK-NOT: store ; CHECK-NEXT: ret void - store i8* null, i8** @test1 + store i8* null, i8** @glbl ret void } define void @test1b(i8* %p) { -; CHECK: @test1b +; CHECK-LABEL: @test1b( ; CHECK-NEXT: store ; CHECK-NEXT: ret void - store i8* %p, i8** @test1 + store i8* %p, i8** @glbl ret void } +define void @test2() { +; CHECK-LABEL: @test2( +; CHECK: alloca i8 + %txt = alloca i8 + call void @foo2(i8* %txt) + %call2 = call i8* @strdup(i8* %txt) + store i8* %call2, i8** @glbl + ret void +} +declare i8* @strdup(i8*) +declare void @foo2(i8*) + +define void @test3() uwtable personality i32 (i32, i64, i8*, i8*)* @__gxx_personality_v0 { +; CHECK-LABEL: @test3( +; CHECK-NOT: bb1: +; CHECK-NOT: bb2: +; CHECK: invoke + %ptr = invoke i8* @_Znwm(i64 1) + to label %bb1 unwind label %bb2 +bb1: + store i8* %ptr, i8** @glbl + unreachable +bb2: + %tmp1 = landingpad { i8*, i32 } + cleanup + resume { i8*, i32 } %tmp1 +} +declare i32 @__gxx_personality_v0(i32, i64, i8*, i8*) +declare i8* @_Znwm(i64)