David Greene | e28232e | 2009-05-05 20:22:36 +0000 | [diff] [blame^] | 1 | ; Check that we do not strength reduce to an overflowiong loop condition |
| 2 | ; RUN: llvm-as < %s | opt -loop-reduce | llvm-dis | not grep 4755160694556239428 |
| 3 | |
| 4 | target datalayout = "e-p:64:64" |
| 5 | target triple = "x86_64-unknown-linux-gnu" |
| 6 | @"initialized$$$CFE_id_3d9e38d5_main" = linkonce global [3 x i64] [i64 6729544817907097974, i64 754394135718280480, i64 0] |
| 7 | @"initialized$main$$CFE_id_3d9e38d5_main" = linkonce global [512 x i64] zeroinitializer |
| 8 | |
| 9 | define i32 @main() { |
| 10 | "file loop.c, line 10, bb14": |
| 11 | %vals = alloca [512 x i64], align 16 |
| 12 | br label %"file loop.c, line 10, bb101" |
| 13 | |
| 14 | "file loop.c, line 10, bb101": |
| 15 | br label %"file loop.c, line 10, in inner vector loop at depth 0, bb62" |
| 16 | |
| 17 | "file loop.c, line 10, in inner vector loop at depth 0, bb62": |
| 18 | %"$SI_S13.0" = phi i64 [ 0, %"file loop.c, line 10, bb101" ], [ %r35, %"file loop.c, line 13, in inner vector loop at depth 0, bb63" ] |
| 19 | %"$LC_S14.0" = phi i64 [ -256, %"file loop.c, line 10, bb101" ], [ %r37, %"file loop.c, line 13, in inner vector loop at depth 0, bb63" ] |
| 20 | br label %"file loop.c, line 13, in inner vector loop at depth 0, bb63" |
| 21 | |
| 22 | "file loop.c, line 13, in inner vector loop at depth 0, bb63": |
| 23 | %r3 = add i64 %"$SI_S13.0", ptrtoint ([512 x i64]* @"initialized$main$$CFE_id_3d9e38d5_main" to i64) |
| 24 | %vals18 = bitcast [512 x i64]* %vals to i8* |
| 25 | %ctg2 = getelementptr i8* %vals18, i64 %"$SI_S13.0" |
| 26 | %r9 = inttoptr i64 %r3 to <2 x i64>* |
| 27 | %r10 = load <2 x i64>* %r9, align 8 |
| 28 | %r12 = bitcast i8* %ctg2 to <2 x i64>* |
| 29 | store <2 x i64> %r10, <2 x i64>* %r12, align 16 |
| 30 | %tmp17 = inttoptr i64 %r3 to <2 x i64>* |
| 31 | %r15 = getelementptr <2 x i64>* %tmp17, i64 1 |
| 32 | %r16 = load <2 x i64>* %r15, align 8 |
| 33 | %ctg2.sum19 = or i64 %"$SI_S13.0", 16 |
| 34 | %r19 = getelementptr i8* %vals18, i64 %ctg2.sum19 |
| 35 | %0 = bitcast i8* %r19 to <2 x i64>* |
| 36 | store <2 x i64> %r16, <2 x i64>* %0, align 16 |
| 37 | %tmp15 = inttoptr i64 %r3 to <2 x i64>* |
| 38 | %r22 = getelementptr <2 x i64>* %tmp15, i64 2 |
| 39 | %r23 = load <2 x i64>* %r22, align 8 |
| 40 | %ctg2.sum20 = or i64 %"$SI_S13.0", 32 |
| 41 | %r26 = getelementptr i8* %vals18, i64 %ctg2.sum20 |
| 42 | %1 = bitcast i8* %r26 to <2 x i64>* |
| 43 | store <2 x i64> %r23, <2 x i64>* %1, align 16 |
| 44 | %tmp13 = inttoptr i64 %r3 to <2 x i64>* |
| 45 | %r29 = getelementptr <2 x i64>* %tmp13, i64 3 |
| 46 | %r30 = load <2 x i64>* %r29, align 8 |
| 47 | %ctg2.sum21 = or i64 %"$SI_S13.0", 48 |
| 48 | %r33 = getelementptr i8* %vals18, i64 %ctg2.sum21 |
| 49 | %2 = bitcast i8* %r33 to <2 x i64>* |
| 50 | store <2 x i64> %r30, <2 x i64>* %2, align 16 |
| 51 | %r35 = add i64 %"$SI_S13.0", 64 |
| 52 | %r37 = add i64 %"$LC_S14.0", 4 |
| 53 | %r39 = icmp slt i64 %r37, 0 |
| 54 | br i1 %r39, label %"file loop.c, line 10, in inner vector loop at depth 0, bb62", label %"file loop.c, line 15, bb51" |
| 55 | |
| 56 | "file loop.c, line 15, bb51": |
| 57 | %3 = getelementptr [512 x i64]* %vals, i64 0, i64 0 |
| 58 | store i64 0, i64* %3, align 16 |
| 59 | br label %"file loop.c, line 10, in inner loop at depth 0, bb65" |
| 60 | |
| 61 | "file loop.c, line 10, in inner loop at depth 0, bb65": |
| 62 | %"$vals_WR0_S15.0" = phi i64 [ 0, %"file loop.c, line 15, bb51" ], [ %r70, %"file loop.c, line 16, in inner loop at depth 0, bb67" ] |
| 63 | %"$i_S16.0" = phi i64 [ 0, %"file loop.c, line 15, bb51" ], [ %r78, %"file loop.c, line 16, in inner loop at depth 0, bb67" ] |
| 64 | br label %"file loop.c, line 16, in inner loop at depth 0, bb67" |
| 65 | |
| 66 | "file loop.c, line 16, in inner loop at depth 0, bb67": |
| 67 | %r45 = add i64 %"$vals_WR0_S15.0", 81985529216486895 |
| 68 | %r5111 = or i64 %"$i_S16.0", 1 |
| 69 | %r5212 = getelementptr [512 x i64]* %vals, i64 0, i64 %r5111 |
| 70 | store i64 %r45, i64* %r5212, align 8 |
| 71 | %r54 = add i64 %"$vals_WR0_S15.0", 163971058432973790 |
| 72 | %r599 = or i64 %"$i_S16.0", 2 |
| 73 | %r6010 = getelementptr [512 x i64]* %vals, i64 0, i64 %r599 |
| 74 | store i64 %r54, i64* %r6010, align 16 |
| 75 | %r62 = add i64 %"$vals_WR0_S15.0", 245956587649460685 |
| 76 | %r677 = or i64 %"$i_S16.0", 3 |
| 77 | %r688 = getelementptr [512 x i64]* %vals, i64 0, i64 %r677 |
| 78 | store i64 %r62, i64* %r688, align 8 |
| 79 | %r70 = add i64 %"$vals_WR0_S15.0", 327942116865947580 |
| 80 | %r75 = add i64 %"$i_S16.0", 4 |
| 81 | %r766 = getelementptr [512 x i64]* %vals, i64 0, i64 %r75 |
| 82 | store i64 %r70, i64* %r766, align 16 |
| 83 | %r78 = add i64 %"$i_S16.0", 4 |
| 84 | %r80 = icmp slt i64 %r78, 508 |
| 85 | br i1 %r80, label %"file loop.c, line 10, in inner loop at depth 0, bb65", label %"file loop.c, line 16, bb39" |
| 86 | |
| 87 | "file loop.c, line 16, bb39": |
| 88 | %r84 = add i64 %"$vals_WR0_S15.0", 409927646082434475 |
| 89 | %r885 = getelementptr [512 x i64]* %vals, i64 0, i64 509 |
| 90 | store i64 %r84, i64* %r885, align 8 |
| 91 | %r90 = add i64 %"$vals_WR0_S15.0", 491913175298921370 |
| 92 | %r944 = getelementptr [512 x i64]* %vals, i64 0, i64 510 |
| 93 | store i64 %r90, i64* %r944, align 16 |
| 94 | %r1003 = getelementptr [512 x i64]* %vals, i64 0, i64 511 |
| 95 | %r96.c = add i64 %"$vals_WR0_S15.0", 573898704515408265 |
| 96 | store i64 %r96.c, i64* %r1003, align 8 |
| 97 | br label %"file loop.c, line 10, in inner loop at depth 0, bb13" |
| 98 | |
| 99 | "file loop.c, line 10, in inner loop at depth 0, bb13": |
| 100 | %"$i_S17.0" = phi i64 [ 0, %"file loop.c, line 16, bb39" ], [ %r111, %"file loop.c, line 19, in inner loop at depth 0, bb25" ] |
| 101 | br label %"file loop.c, line 19, in inner loop at depth 0, bb6" |
| 102 | |
| 103 | "file loop.c, line 19, in inner loop at depth 0, bb6": |
| 104 | %r102 = add i64 %"$i_S17.0", 1 |
| 105 | %r106 = add i64 %"$i_S17.0", 1 |
| 106 | %r1071 = getelementptr [512 x i64]* %vals, i64 0, i64 %r106 |
| 107 | %r1072 = load i64* %r1071, align 8 |
| 108 | %r109 = call i32 (...)* @printf([17 x i8]* bitcast ([3 x i64]* @"initialized$$$CFE_id_3d9e38d5_main" to [17 x i8]*), i64 %r102, i64 %r1072) |
| 109 | br label %"file loop.c, line 19, in inner loop at depth 0, bb25" |
| 110 | |
| 111 | "file loop.c, line 19, in inner loop at depth 0, bb25": |
| 112 | %r111 = add i64 %"$i_S17.0", 1 |
| 113 | %r113 = icmp slt i64 %r111, 511 |
| 114 | br i1 %r113, label %"file loop.c, line 10, in inner loop at depth 0, bb13", label %"file loop.c, line 19, bb10" |
| 115 | |
| 116 | "file loop.c, line 19, bb10": |
| 117 | ret i32 0 |
| 118 | } |
| 119 | |
| 120 | declare i8* @llvm.returnaddress(i32) nounwind readnone |
| 121 | |
| 122 | declare i32 @printf(...) |