brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.2 KiB · 0cee9aa Raw
109 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --version 52; RUN: opt < %s -disable-output "-passes=print<da>" -aa-pipeline=basic-aa 2>&1 \3; RUN: | FileCheck %s4 5target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"6target triple = "x86_64-apple-macosx10.6.0"7 8; for (int i = 0; i < 100; ++i) {9;   int t0 = a[i][i];10;   int t1 = t0 + 1;11;   a[i][5] = t1;12; }13; The subscript 5 in a[i][5] is deliberately an i32, mismatching the types of14; other subscript. DependenceAnalysis before the fix crashed due to this15; mismatch.16define void @i32_subscript(ptr %a, ptr %b) {17; CHECK-LABEL: 'i32_subscript'18; CHECK-NEXT:  Src: %0 = load i32, ptr %a.addr, align 4 --> Dst: %0 = load i32, ptr %a.addr, align 419; CHECK-NEXT:    da analyze - none!20; CHECK-NEXT:  Src: %0 = load i32, ptr %a.addr, align 4 --> Dst: store i32 %1, ptr %a.addr.2, align 421; CHECK-NEXT:    da analyze - anti [0|<]!22; CHECK-NEXT:  Src: store i32 %1, ptr %a.addr.2, align 4 --> Dst: store i32 %1, ptr %a.addr.2, align 423; CHECK-NEXT:    da analyze - none!24;25entry:26  br label %for.body27 28for.body:29  %i = phi i64 [ 0, %entry ], [ %i.inc, %for.body ]30  %a.addr = getelementptr [100 x [100 x i32]], ptr %a, i64 0, i64 %i, i64 %i31  %a.addr.2 = getelementptr [100 x [100 x i32]], ptr %a, i64 0, i64 %i, i32 532  %0 = load i32, ptr %a.addr, align 433  %1 = add i32 %0, 134  store i32 %1, ptr %a.addr.2, align 435  %i.inc = add nsw i64 %i, 136  %exitcond = icmp ne i64 %i.inc, 10037  br i1 %exitcond, label %for.body, label %for.end38 39for.end:40  ret void41}42 43;  unsigned i, j;44;  for (i = 1; i < SIZE; i++) {45;    for (j = i; j < SIZE; j++) {46;      a[i][j] = a[i+1][j-1] + 2;47;    }48;  }49;  Extends the previous example to coupled MIV subscripts.50;51; FIXME: Currently delinearization does not work as expected.52 53 54@a = global [10004 x [10004 x i32]] zeroinitializer, align 1655 56; Function Attrs: nounwind uwtable57define void @coupled_miv_type_mismatch(i32 %n) {58; CHECK-LABEL: 'coupled_miv_type_mismatch'59; CHECK-NEXT:  Src: %2 = load i32, ptr %arrayidx5, align 4 --> Dst: %2 = load i32, ptr %arrayidx5, align 460; CHECK-NEXT:    da analyze - none!61; CHECK-NEXT:  Src: %2 = load i32, ptr %arrayidx5, align 4 --> Dst: store i32 %add6, ptr %arrayidx10, align 462; CHECK-NEXT:    da analyze - anti [< >]!63; CHECK-NEXT:  Src: store i32 %add6, ptr %arrayidx10, align 4 --> Dst: store i32 %add6, ptr %arrayidx10, align 464; CHECK-NEXT:    da analyze - none!65;66entry:67  br label %for.cond68 69for.cond:                                         ; preds = %for.inc11, %entry70  %indvars.iv11 = phi i64 [ %indvars.iv.next12, %for.inc11 ], [ 1, %entry ]71  %exitcond14 = icmp ne i64 %indvars.iv11, 1000072  br i1 %exitcond14, label %for.cond1.preheader, label %for.end1373 74for.cond1.preheader:                              ; preds = %for.cond75  %0 = trunc i64 %indvars.iv11 to i3276  br label %for.cond177 78for.cond1:                                        ; preds = %for.cond1.preheader, %for.body379  %indvars.iv8 = phi i64 [ %indvars.iv11, %for.cond1.preheader ], [ %indvars.iv.next9, %for.body3 ]80  %j.0 = phi i32 [ %inc, %for.body3 ], [ %0, %for.cond1.preheader ]81  %lftr.wideiv = trunc i64 %indvars.iv8 to i3282  %exitcond = icmp ne i32 %lftr.wideiv, 1000083  br i1 %exitcond, label %for.body3, label %for.inc1184 85for.body3:                                        ; preds = %for.cond186  %sub = add nsw i32 %j.0, -187  %idxprom = zext i32 %sub to i6488  %1 = add nuw nsw i64 %indvars.iv11, 189  %arrayidx5 = getelementptr inbounds [10004 x [10004 x i32]], ptr @a, i64 0, i64 %1, i64 %idxprom90  %2 = load i32, ptr %arrayidx5, align 491  %add6 = add nsw i32 %2, 292  %arrayidx10 = getelementptr inbounds [10004 x [10004 x i32]], ptr @a, i64 0, i64 %indvars.iv11, i64 %indvars.iv893  store i32 %add6, ptr %arrayidx10, align 494  %indvars.iv.next9 = add nuw nsw i64 %indvars.iv8, 195  %inc = add nuw nsw i32 %j.0, 196  br label %for.cond197 98for.inc11:                                        ; preds = %for.cond199  %indvars.iv.next12 = add nuw nsw i64 %indvars.iv11, 1100  br label %for.cond101 102for.end13:                                        ; preds = %for.cond103  ret void104}105 106!llvm.ident = !{!0}107 108!0 = !{!"clang version 3.7.0"}109