|  | ; 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 | 
|  | } | 
|  |  |