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