xref: /llvm-project/llvm/test/Transforms/InstCombine/phi-int-users.ll (revision 5b40a05d8f2872e4822fd5ff18383fbd5944f511)
1*5b40a05dSAlexis Engelke; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
2*5b40a05dSAlexis Engelke; RUN: opt -S < %s -passes=instcombine | FileCheck %s
3*5b40a05dSAlexis Engelke
4*5b40a05dSAlexis Engelke; Verify that instcombine doesn't look at users of Constant in different
5*5b40a05dSAlexis Engelke; functions for dominates() queries.
6*5b40a05dSAlexis Engelke
7*5b40a05dSAlexis Engelkedefine void @f1(i1 %a) {
8*5b40a05dSAlexis Engelke; CHECK-LABEL: define void @f1(
9*5b40a05dSAlexis Engelke; CHECK-SAME: i1 [[A:%.*]]) {
10*5b40a05dSAlexis Engelke; CHECK-NEXT:    br label %[[BB1:.*]]
11*5b40a05dSAlexis Engelke; CHECK:       [[BB1]]:
12*5b40a05dSAlexis Engelke; CHECK-NEXT:    br i1 [[A]], label %[[BB3:.*]], label %[[BB2:.*]]
13*5b40a05dSAlexis Engelke; CHECK:       [[BB2]]:
14*5b40a05dSAlexis Engelke; CHECK-NEXT:    br label %[[BB3]]
15*5b40a05dSAlexis Engelke; CHECK:       [[BB3]]:
16*5b40a05dSAlexis Engelke; CHECK-NEXT:    [[PHI:%.*]] = phi i64 [ 0, %[[BB2]] ], [ 1, %[[BB1]] ]
17*5b40a05dSAlexis Engelke; CHECK-NEXT:    [[INTTOPTR:%.*]] = inttoptr i64 [[PHI]] to ptr
18*5b40a05dSAlexis Engelke; CHECK-NEXT:    store i32 0, ptr [[INTTOPTR]], align 4
19*5b40a05dSAlexis Engelke; CHECK-NEXT:    br label %[[BB1]]
20*5b40a05dSAlexis Engelke;
21*5b40a05dSAlexis Engelke  br label %bb1
22*5b40a05dSAlexis Engelke
23*5b40a05dSAlexis Engelkebb1:
24*5b40a05dSAlexis Engelke  br i1 %a, label %bb3, label %bb2
25*5b40a05dSAlexis Engelke
26*5b40a05dSAlexis Engelkebb2:
27*5b40a05dSAlexis Engelke  br label %bb3
28*5b40a05dSAlexis Engelke
29*5b40a05dSAlexis Engelkebb3:
30*5b40a05dSAlexis Engelke  %phi = phi i64 [ 0, %bb2 ], [ 1, %bb1 ]
31*5b40a05dSAlexis Engelke  %inttoptr = inttoptr i64 %phi to ptr
32*5b40a05dSAlexis Engelke  store i32 0, ptr %inttoptr, align 4
33*5b40a05dSAlexis Engelke  br label %bb1
34*5b40a05dSAlexis Engelke}
35*5b40a05dSAlexis Engelke
36*5b40a05dSAlexis Engelkedefine void @f2() {
37*5b40a05dSAlexis Engelke; CHECK-LABEL: define void @f2() {
38*5b40a05dSAlexis Engelke; CHECK-NEXT:  [[BB:.*:]]
39*5b40a05dSAlexis Engelke; CHECK-NEXT:    ret void
40*5b40a05dSAlexis Engelke;
41*5b40a05dSAlexis Engelkebb:
42*5b40a05dSAlexis Engelke  %inttoptr = inttoptr i64 0 to ptr
43*5b40a05dSAlexis Engelke  ret void
44*5b40a05dSAlexis Engelke}
45