• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; RUN: opt < %s -globalopt -S | FileCheck %s
2; CHECK: call void @Actual
3
4; Check that a comparison does not prevent an indirect call from being made
5; direct.  The global will still remain, but indirect call elim is still good.
6
7@G = internal global void ()* null              ; <void ()**> [#uses=2]
8
9define internal void @Actual() {
10        ret void
11}
12
13define void @init() {
14        store void ()* @Actual, void ()** @G
15        ret void
16}
17
18define void @doit() {
19        %FP = load void ()*, void ()** @G         ; <void ()*> [#uses=2]
20        %CC = icmp eq void ()* %FP, null                ; <i1> [#uses=1]
21        br i1 %CC, label %isNull, label %DoCall
22
23DoCall:         ; preds = %0
24        call void %FP( )
25        ret void
26
27isNull:         ; preds = %0
28        ret void
29}
30