Jakob Stoklund Olesen | 0b35c35 | 2012-04-20 23:36:09 +0000 | [diff] [blame] | 1 | ; RUN: llc < %s |
| 2 | ; PR12599 |
| 3 | ; |
| 4 | ; This bitcode causes the X86 target to make changes to the DAG during |
| 5 | ; selection in MatchAddressRecursively. The edit triggers CSE which causes both |
| 6 | ; the current node and yet-to-be-selected nodes to be deleted. |
| 7 | ; |
| 8 | ; SelectionDAGISel::DoInstructionSelection must handle that. |
| 9 | ; |
| 10 | target triple = "x86_64-apple-macosx" |
| 11 | |
| 12 | %0 = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8**, i8**, i32, i32***, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [9 x [16 x [16 x i16]]], [5 x [16 x [16 x i16]]], [9 x [8 x [8 x i16]]], [2 x [4 x [16 x [16 x i16]]]], [16 x [16 x i16]], [16 x [16 x i32]], i32****, i32***, i32***, i32***, i32****, i32****, %1*, %2*, %9*, i32*, i32*, i32, i32, i32, i32, [4 x [4 x i32]], i32, i32, i32, i32, i32, double, i32, i32, i32, i32, i16******, i16******, i16******, i16******, [15 x i16], i32, i32, i32, i32, i32, i32, i32, i32, [6 x [32 x i32]], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [1 x i32], i32, i32, [2 x i32], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %10*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, double**, double***, i32***, double**, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [3 x [2 x i32]], [2 x i32], i32, i32, i16, i32, i32, i32, i32, i32 } |
| 13 | %1 = type { i32, i32, [100 x %2*], i32, float, float, float } |
| 14 | %2 = type { i32, i32, i32, i32, i32, i32, %3*, %6*, %8*, i32, i32*, i32*, i32*, i32, i32*, i32*, i32*, i32 (i32)*, [3 x [2 x i32]] } |
| 15 | %3 = type { %4*, %5, %5 } |
| 16 | %4 = type { i32, i32, i8, i32, i32, i8, i8, i32, i32, i8*, i32 } |
| 17 | %5 = type { i32, i32, i32, i32, i32, i8*, i32*, i32, i32 } |
| 18 | %6 = type { [3 x [11 x %7]], [2 x [9 x %7]], [2 x [10 x %7]], [2 x [6 x %7]], [4 x %7], [4 x %7], [3 x %7] } |
| 19 | %7 = type { i16, i8, i64 } |
| 20 | %8 = type { [2 x %7], [4 x %7], [3 x [4 x %7]], [10 x [4 x %7]], [10 x [15 x %7]], [10 x [15 x %7]], [10 x [5 x %7]], [10 x [5 x %7]], [10 x [15 x %7]], [10 x [15 x %7]] } |
| 21 | %9 = type { i32, i32, i32, [2 x i32], i32, [8 x i32], %9*, %9*, i32, [2 x [4 x [4 x [2 x i32]]]], [16 x i8], [16 x i8], i32, i64, [4 x i32], [4 x i32], i64, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i16, double, i32, i32, i32, i32, i32, i32, i32, i32, i32 } |
| 22 | %10 = type { i32, i32, i32, i32, i32, %10* } |
| 23 | |
| 24 | @images = external hidden global %0, align 8 |
| 25 | |
| 26 | define hidden fastcc void @Mode_Decision_for_4x4IntraBlocks() nounwind uwtable ssp { |
| 27 | bb4: |
| 28 | %tmp = or i208 undef, 0 |
| 29 | br i1 undef, label %bb35, label %bb5 |
| 30 | |
| 31 | bb5: |
| 32 | %tmp6 = add i32 0, 2 |
| 33 | %tmp7 = lshr i208 %tmp, 80 |
| 34 | %tmp8 = trunc i208 %tmp7 to i32 |
| 35 | %tmp9 = and i32 %tmp8, 65535 |
| 36 | %tmp10 = shl nuw nsw i32 %tmp9, 1 |
| 37 | %tmp11 = add i32 0, 2 |
| 38 | %tmp12 = add i32 %tmp11, 0 |
| 39 | %tmp13 = add i32 %tmp12, %tmp10 |
| 40 | %tmp14 = lshr i32 %tmp13, 2 |
| 41 | %tmp15 = trunc i32 %tmp14 to i16 |
| 42 | store i16 %tmp15, i16* getelementptr inbounds (%0* @images, i64 0, i32 47, i64 3, i64 0, i64 3), align 2 |
| 43 | %tmp16 = lshr i208 %tmp, 96 |
| 44 | %tmp17 = trunc i208 %tmp16 to i32 |
| 45 | %tmp18 = and i32 %tmp17, 65535 |
| 46 | %tmp19 = add i32 %tmp18, 2 |
| 47 | %tmp20 = add i32 %tmp19, 0 |
| 48 | %tmp21 = add i32 %tmp20, 0 |
| 49 | %tmp22 = lshr i32 %tmp21, 2 |
| 50 | %tmp23 = trunc i32 %tmp22 to i16 |
| 51 | store i16 %tmp23, i16* getelementptr inbounds (%0* @images, i64 0, i32 47, i64 3, i64 2, i64 3), align 2 |
| 52 | %tmp24 = add i32 %tmp6, %tmp9 |
| 53 | %tmp25 = add i32 %tmp24, 0 |
| 54 | %tmp26 = lshr i32 %tmp25, 2 |
| 55 | %tmp27 = trunc i32 %tmp26 to i16 |
| 56 | store i16 %tmp27, i16* getelementptr inbounds (%0* @images, i64 0, i32 47, i64 7, i64 1, i64 2), align 4 |
| 57 | %tmp28 = lshr i208 %tmp, 80 |
| 58 | %tmp29 = shl nuw nsw i208 %tmp28, 1 |
| 59 | %tmp30 = trunc i208 %tmp29 to i32 |
| 60 | %tmp31 = and i32 %tmp30, 131070 |
| 61 | %tmp32 = add i32 %tmp12, %tmp31 |
| 62 | %tmp33 = lshr i32 %tmp32, 2 |
| 63 | %tmp34 = trunc i32 %tmp33 to i16 |
| 64 | store i16 %tmp34, i16* getelementptr inbounds (%0* @images, i64 0, i32 47, i64 7, i64 1, i64 3), align 2 |
| 65 | br label %bb35 |
| 66 | |
| 67 | bb35: ; preds = %bb5, %bb4 |
| 68 | unreachable |
| 69 | } |