File: loop.ll

package info (click to toggle)
llvm-toolchain-16 1%3A16.0.6-15~deb12u1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 1,634,792 kB
  • sloc: cpp: 6,179,261; ansic: 1,216,205; asm: 741,319; python: 196,614; objc: 75,325; f90: 49,640; lisp: 32,396; pascal: 12,286; sh: 9,394; perl: 7,442; ml: 5,494; awk: 3,523; makefile: 2,723; javascript: 1,206; xml: 886; fortran: 581; cs: 573
file content (35 lines) | stat: -rw-r--r-- 1,195 bytes parent folder | download | duplicates (12)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
; Diff file with itself, assert no difference by return code
; RUN: llvm-diff %s %s

; Replace %newvar1 with %newvar2 in the phi node. This can only
; be detected to be different once BB1 has been processed.
; RUN: rm -f %t.ll
; RUN: cat %s | sed -e 's/ %newvar1, %BB1 / %newvar2, %BB1 /' > %t.ll
; RUN: not llvm-diff %s %t.ll 2>&1 | FileCheck --check-prefix DIFFERENT-VAR %s

; DIFFERENT-VAR:      in function func:
; DIFFERENT-VAR-NEXT:   in block %BB0:
; DIFFERENT-VAR-NEXT:     >   %var = phi i32 [ 0, %ENTRY ], [ %newvar2, %BB1 ]
; DIFFERENT-VAR-NEXT:     <   %var = phi i32 [ 0, %ENTRY ], [ %newvar1, %BB1 ]
define i32 @func() {
ENTRY:
  br label %BB0

BB0:
  ; When diffing this phi node, we need to detect whether
  ; %newvar1 is equivalent, which is not known until BB1 has been processed.
  %var = phi i32 [ 0, %ENTRY ], [ %newvar1, %BB1 ]
  %cnd = icmp eq i32 %var, 0
  br i1 %cnd, label %BB1, label %END

BB1:
  %newvar1 = add i32 %var, 1
  %newvar2 = add i32 %var, 2
  br label %BB0

END:
  ; Equivalence of the ret depends on equivalence of %var.
  ; Even if %var differs, we do not report a diff here, because
  ; this is an indirect diff caused by another diff.
  ret i32 %var
}