| ; RUN: opt %s -globalopt -S | \ | 
 | ; RUN:   grep {call void @Actual} | 
 |  | 
 | ; Check that a comparison does not prevent an indirect call from being made  | 
 | ; direct.  The global will still remain, but indirect call elim is still good. | 
 |  | 
 | @G = internal global void ()* null              ; <void ()**> [#uses=2] | 
 |  | 
 | define internal void @Actual() { | 
 |         ret void | 
 | } | 
 |  | 
 | define void @init() { | 
 |         store void ()* @Actual, void ()** @G | 
 |         ret void | 
 | } | 
 |  | 
 | define void @doit() { | 
 |         %FP = load void ()** @G         ; <void ()*> [#uses=2] | 
 |         %CC = icmp eq void ()* %FP, null                ; <i1> [#uses=1] | 
 |         br i1 %CC, label %isNull, label %DoCall | 
 |  | 
 | DoCall:         ; preds = %0 | 
 |         call void %FP( ) | 
 |         ret void | 
 |  | 
 | isNull:         ; preds = %0 | 
 |         ret void | 
 | } | 
 |  |