Follow up to d0858bffa11, add missing REQUIRES x86
[llvm-project.git] / llvm / test / tools / llvm-diff / assumption-report-order.ll
blob5afcc8dcbad79123d69aa8129a18f12c9128f2d6
1 ; Check that differences are reported in the BB processing order
2 ; following the control flow, independent on whether the diff was depending
3 ; on an assumption or not.
5 ; Replace %newvar1 with %newvar2 in the phi node. This can only
6 ; be detected to be different once BB2 has been processed, so leads to a assumption
7 ; and is detected to diff later on.
8 ; Also, replace the 1000 by 2000 in BB1, which is detected directly.
10 ; RUN: rm -f %t.ll
11 ; RUN: cat %s | sed -e 's/ %newvar1, %BB2 / %newvar2, %BB2 /' | sed -e 's/1000/2000/' > %t.ll
12 ; RUN: not llvm-diff %s %t.ll 2>&1 | FileCheck %s
14 ; CHECK:      in function func:
15 ; CHECK-NEXT:   in block %BB0:
16 ; CHECK-NEXT:     >   %var = phi i32 [ 0, %ENTRY ], [ %newvar2, %BB2 ]
17 ; CHECK-NEXT:     <   %var = phi i32 [ 0, %ENTRY ], [ %newvar1, %BB2 ]
18 ; CHECK-NEXT:   in block %BB1:
19 ; CHECK-NEXT:     >   %diffvar = add i32 %var, 2000
20 ; CHECK-NEXT:     <   %diffvar = add i32 %var, 1000
22 define i32 @func() {
23 ENTRY:
24   br label %BB0
26 BB0:
27   ; When diffing this phi node, we need to detect whether
28   ; %newvar1 is equivalent, which is not known until BB2 has been processed.
29   %var = phi i32 [ 0, %ENTRY ], [ %newvar1, %BB2 ]
30   %cnd = icmp eq i32 %var, 0
31   br i1 %cnd, label %BB1, label %END
33 BB1:
34   %diffvar = add i32 %var, 1000
35   br label %BB1
37 BB2:
38   %newvar1 = add i32 %var, 1
39   %newvar2 = add i32 %var, 2
40   br label %BB0
42 END:
43   ; Equivalence of the ret depends on equivalence of %var.
44   ; Even if %var differs, we do not report a diff here, because
45   ; this is an indirect diff caused by another diff.
46   ret i32 %var