41 lines · plain
1; RUN: opt < %s -passes=globalopt -S | FileCheck %s2; CHECK: global3 4@G = internal global ptr null ; <ptr> [#uses=2]5 6define internal void @Actual() {7; CHECK-LABEL: Actual(8 ret void9}10 11define void @init() {12; CHECK-LABEL: init(13; CHECK: store ptr @Actual, ptr @G14 store ptr @Actual, ptr @G15 ret void16}17 18define void @doit() #0 {19; CHECK-LABEL: doit(20 %FP = load ptr, ptr @G ; <ptr> [#uses=2]21; CHECK: %FP = load ptr, ptr @G22 %CC = icmp eq ptr %FP, null ; <i1> [#uses=1]23; CHECK: %CC = icmp eq ptr %FP, null24 br i1 %CC, label %isNull, label %DoCall25; CHECK: br i1 %CC, label %isNull, label %DoCall26 27DoCall: ; preds = %028; CHECK: DoCall:29; CHECK: call void %FP()30; CHECK: ret void31 call void %FP( )32 ret void33 34isNull: ; preds = %035; CHECK: isNull:36; CHECK: ret void37 ret void38}39 40attributes #0 = { null_pointer_is_valid }41