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