1; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --version 5 2; RUN: opt < %s -disable-output "-passes=print<da>" -aa-pipeline=basic-aa 2>&1 \ 3; RUN: | FileCheck %s 4;; Check this doesn't crash. 5target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" 6target triple = "x86_64-unknown-linux-gnu" 7 8;; struct s { 9;; int A[10][10]; 10;; int C[10][10][10]; 11;; } S; 12 13;; void dep_constraint_crash_test(int k,int N) { 14;; for( int i=0;i<N;i++) 15;; for( int j=0;j<N;j++) 16;; S.A[0][0] = S.C[0][0][k]; 17;; } 18 19 20%struct.s = type { [10 x [10 x i32]], [10 x [10 x [10 x i32]]] } 21 22@S = common global %struct.s zeroinitializer 23 24define void @dep_constraint_crash_test(i32 %k, i32 %N) { 25; CHECK-LABEL: 'dep_constraint_crash_test' 26; CHECK-NEXT: Src: %0 = load i32, ptr %arrayidx, align 4 --> Dst: %0 = load i32, ptr %arrayidx, align 4 27; CHECK-NEXT: da analyze - consistent input [S S]! 28; CHECK-NEXT: Src: %0 = load i32, ptr %arrayidx, align 4 --> Dst: store i32 %0, ptr @S, align 4 29; CHECK-NEXT: da analyze - anti [S S|<]! 30; CHECK-NEXT: Src: store i32 %0, ptr @S, align 4 --> Dst: store i32 %0, ptr @S, align 4 31; CHECK-NEXT: da analyze - consistent output [S S]! 32; 33entry: 34 %cmp12 = icmp sgt i32 %N, 0 35 br i1 %cmp12, label %for.cond1.preheader.lr.ph, label %for.end6 36 37for.cond1.preheader.lr.ph: 38 %idxprom = sext i32 %k to i64 39 %arrayidx = getelementptr inbounds %struct.s, ptr @S, i64 0, i32 1, i64 0, i64 0, i64 %idxprom 40 br label %for.body3.preheader 41 42for.body3.preheader: 43 %i.013 = phi i32 [ 0, %for.cond1.preheader.lr.ph ], [ %inc5, %for.inc4 ] 44 br label %for.body3 45 46for.body3: 47 %j.011 = phi i32 [ %inc, %for.body3 ], [ 0, %for.body3.preheader ] 48 %0 = load i32, ptr %arrayidx 49 store i32 %0, ptr @S 50 %inc = add nuw nsw i32 %j.011, 1 51 %exitcond = icmp eq i32 %inc, %N 52 br i1 %exitcond, label %for.inc4, label %for.body3 53 54for.inc4: 55 %inc5 = add nuw nsw i32 %i.013, 1 56 %exitcond14 = icmp eq i32 %inc5, %N 57 br i1 %exitcond14, label %for.end6, label %for.body3.preheader 58 59for.end6: 60 ret void 61} 62