; RUN: opt < %s -passes=globalopt -S | FileCheck %s ; CHECK: global @G = internal global void ()* null ; <void ()**> [#uses=2] define internal void @Actual() { ; CHECK-LABEL: Actual( ret void } define void @init() { ; CHECK-LABEL: init( ; CHECK: store void ()* @Actual, void ()** @G store void ()* @Actual, void ()** @G ret void } define void @doit() #0 { ; CHECK-LABEL: doit( %FP = load void ()*, void ()** @G ; <void ()*> [#uses=2] ; CHECK: %FP = load void ()*, void ()** @G %CC = icmp eq void ()* %FP, null ; <i1> [#uses=1] ; CHECK: %CC = icmp eq void ()* %FP, null br i1 %CC, label %isNull, label %DoCall ; CHECK: br i1 %CC, label %isNull, label %DoCall DoCall: ; preds = %0 ; CHECK: DoCall: ; CHECK: call void %FP() ; CHECK: ret void call void %FP( ) ret void isNull: ; preds = %0 ; CHECK: isNull: ; CHECK: ret void ret void } attributes #0 = { null_pointer_is_valid }