1; RUN: opt -disable-output -S -passes=print-ir-similarity < %s 2>&1 | FileCheck %s
2
3; This is a simple test to make sure the IRSimilarityIdentifier and
4; IRSimilarityPrinterPass is working.
5
6; CHECK: 4 candidates of length 2.  Found in:
7; CHECK-NEXT:   Function: cat,  Basic Block: entry
8; CHECK-NEXT:   Function: fish,  Basic Block: entry
9; CHECK-NEXT:   Function: dog,  Basic Block: entry
10; CHECK-NEXT:   Function: turtle,  Basic Block: (unnamed)
11; CHECK-NEXT: 4 candidates of length 3.  Found in:
12; CHECK-NEXT:   Function: cat,  Basic Block: entry
13; CHECK-NEXT:   Function: fish,  Basic Block: entry
14; CHECK-NEXT:   Function: dog,  Basic Block: entry
15; CHECK-NEXT:   Function: turtle,  Basic Block: (unnamed)
16; CHECK-NEXT: 4 candidates of length 4.  Found in:
17; CHECK-NEXT:   Function: cat,  Basic Block: entry
18; CHECK-NEXT:   Function: fish,  Basic Block: entry
19; CHECK-NEXT:   Function: dog,  Basic Block: entry
20; CHECK-NEXT:   Function: turtle,  Basic Block: (unnamed)
21; CHECK-NEXT: 4 candidates of length 5.  Found in:
22; CHECK-NEXT:   Function: cat,  Basic Block: entry
23; CHECK-NEXT:   Function: fish,  Basic Block: entry
24; CHECK-NEXT:   Function: dog,  Basic Block: entry
25; CHECK-NEXT:   Function: turtle,  Basic Block: (unnamed)
26; CHECK-NEXT: 4 candidates of length 6.  Found in:
27; CHECK-NEXT:   Function: cat,  Basic Block: entry
28; CHECK-NEXT:   Function: fish,  Basic Block: entry
29; CHECK-NEXT:   Function: dog,  Basic Block: entry
30; CHECK-NEXT:   Function: turtle,  Basic Block: (unnamed)
31
32define linkonce_odr void @fish() {
33entry:
34  %0 = alloca i32, align 4
35  %1 = alloca i32, align 4
36  %2 = alloca i32, align 4
37  %3 = alloca i32, align 4
38  %4 = alloca i32, align 4
39  %5 = alloca i32, align 4
40  store i32 6, i32* %0, align 4
41  store i32 1, i32* %1, align 4
42  store i32 2, i32* %2, align 4
43  store i32 3, i32* %3, align 4
44  store i32 4, i32* %4, align 4
45  store i32 5, i32* %5, align 4
46  ret void
47}
48
49define void @turtle() {
50  %1 = alloca i32, align 4
51  %2 = alloca i32, align 4
52  %3 = alloca i32, align 4
53  %4 = alloca i32, align 4
54  %5 = alloca i32, align 4
55  %6 = alloca i32, align 4
56  store i32 1, i32* %1, align 4
57  store i32 2, i32* %2, align 4
58  store i32 3, i32* %3, align 4
59  store i32 4, i32* %4, align 4
60  store i32 5, i32* %5, align 4
61  store i32 6, i32* %6, align 4
62  ret void
63}
64
65define void @cat() {
66entry:
67  %0 = alloca i32, align 4
68  %1 = alloca i32, align 4
69  %2 = alloca i32, align 4
70  %3 = alloca i32, align 4
71  %4 = alloca i32, align 4
72  %5 = alloca i32, align 4
73  store i32 6, i32* %0, align 4
74  store i32 1, i32* %1, align 4
75  store i32 2, i32* %2, align 4
76  store i32 3, i32* %3, align 4
77  store i32 4, i32* %4, align 4
78  store i32 5, i32* %5, align 4
79  ret void
80}
81
82define void @dog() {
83entry:
84  %0 = alloca i32, align 4
85  %1 = alloca i32, align 4
86  %2 = alloca i32, align 4
87  %3 = alloca i32, align 4
88  %4 = alloca i32, align 4
89  %5 = alloca i32, align 4
90  store i32 6, i32* %0, align 4
91  store i32 1, i32* %1, align 4
92  store i32 2, i32* %2, align 4
93  store i32 3, i32* %3, align 4
94  store i32 4, i32* %4, align 4
95  store i32 5, i32* %5, align 4
96  ret void
97}
98