xref: /llvm-project/llvm/test/Transforms/GlobalOpt/storepointer-compare.ll (revision d586bd5ca231a6022f439d4c6e43cfeeb53eb1d6)
1; RUN: opt < %s -passes=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 ptr null              ; <ptr> [#uses=2]
8
9define internal void @Actual() {
10        ret void
11}
12
13define void @init() {
14        store ptr @Actual, ptr @G
15        ret void
16}
17
18define void @doit() {
19        %FP = load ptr, ptr @G         ; <ptr> [#uses=2]
20        %CC = icmp eq ptr %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