brintos

brintos / llvm-project-archived public Read only

0
0
Text · 57.1 KiB · 6dde884 Raw
1134 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --version 52; RUN: opt < %s -disable-output -da-delinearize=false "-passes=print<da>"      \3; RUN: -aa-pipeline=basic-aa 2>&1 | FileCheck %s4; RUN: opt < %s -disable-output -da-delinearize=false -passes='print<da><normalized-results>'      \5; RUN: -aa-pipeline=basic-aa 2>&1 | FileCheck %s -check-prefix=NORMALIZE6; RUN: opt < %s -disable-output "-passes=print<da>" -aa-pipeline=basic-aa 2>&1 \7; RUN: | FileCheck %s -check-prefix=DELIN8 9target 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"10target triple = "x86_64-apple-macosx10.6.0"11 12 13;;  for (long int i = 1; i <= 10; i++)14;;    for (long int j = 1; j <= 10; j++) {15;;      A[10*i + j] = 0;16;;      *B++ = A[10*i + j - 1];17 18define void @banerjee0(ptr %A, ptr %B, i64 %m, i64 %n) nounwind uwtable ssp {19; CHECK-LABEL: 'banerjee0'20; CHECK-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 0, ptr %arrayidx, align 821; CHECK-NEXT:    da analyze - none!22; CHECK-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: %0 = load i64, ptr %arrayidx6, align 823; CHECK-NEXT:    da analyze - flow [<= <>]!24; CHECK-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 825; CHECK-NEXT:    da analyze - confused!26; CHECK-NEXT:  Src: %0 = load i64, ptr %arrayidx6, align 8 --> Dst: %0 = load i64, ptr %arrayidx6, align 827; CHECK-NEXT:    da analyze - none!28; CHECK-NEXT:  Src: %0 = load i64, ptr %arrayidx6, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 829; CHECK-NEXT:    da analyze - confused!30; CHECK-NEXT:  Src: store i64 %0, ptr %B.addr.11, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 831; CHECK-NEXT:    da analyze - none!32;33; NORMALIZE-LABEL: 'banerjee0'34; NORMALIZE-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 0, ptr %arrayidx, align 835; NORMALIZE-NEXT:    da analyze - none!36; NORMALIZE-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: %0 = load i64, ptr %arrayidx6, align 837; NORMALIZE-NEXT:    da analyze - flow [<= <>]!38; NORMALIZE-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 839; NORMALIZE-NEXT:    da analyze - confused!40; NORMALIZE-NEXT:  Src: %0 = load i64, ptr %arrayidx6, align 8 --> Dst: %0 = load i64, ptr %arrayidx6, align 841; NORMALIZE-NEXT:    da analyze - none!42; NORMALIZE-NEXT:  Src: %0 = load i64, ptr %arrayidx6, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 843; NORMALIZE-NEXT:    da analyze - confused!44; NORMALIZE-NEXT:  Src: store i64 %0, ptr %B.addr.11, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 845; NORMALIZE-NEXT:    da analyze - none!46;47; DELIN-LABEL: 'banerjee0'48; DELIN-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 0, ptr %arrayidx, align 849; DELIN-NEXT:    da analyze - none!50; DELIN-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: %0 = load i64, ptr %arrayidx6, align 851; DELIN-NEXT:    da analyze - flow [<= <>]!52; DELIN-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 853; DELIN-NEXT:    da analyze - confused!54; DELIN-NEXT:  Src: %0 = load i64, ptr %arrayidx6, align 8 --> Dst: %0 = load i64, ptr %arrayidx6, align 855; DELIN-NEXT:    da analyze - none!56; DELIN-NEXT:  Src: %0 = load i64, ptr %arrayidx6, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 857; DELIN-NEXT:    da analyze - confused!58; DELIN-NEXT:  Src: store i64 %0, ptr %B.addr.11, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 859; DELIN-NEXT:    da analyze - none!60;61entry:62  br label %for.cond1.preheader63 64for.cond1.preheader:                              ; preds = %entry, %for.inc765  %B.addr.04 = phi ptr [ %B, %entry ], [ %scevgep, %for.inc7 ]66  %i.03 = phi i64 [ 1, %entry ], [ %inc8, %for.inc7 ]67  br label %for.body368 69for.body3:                                        ; preds = %for.cond1.preheader, %for.body370  %j.02 = phi i64 [ 1, %for.cond1.preheader ], [ %inc, %for.body3 ]71  %B.addr.11 = phi ptr [ %B.addr.04, %for.cond1.preheader ], [ %incdec.ptr, %for.body3 ]72  %mul = mul nsw i64 %i.03, 1073  %add = add nsw i64 %mul, %j.0274  %arrayidx = getelementptr inbounds i64, ptr %A, i64 %add75  store i64 0, ptr %arrayidx, align 876  %mul4 = mul nsw i64 %i.03, 1077  %add5 = add nsw i64 %mul4, %j.0278  %sub = add nsw i64 %add5, -179  %arrayidx6 = getelementptr inbounds i64, ptr %A, i64 %sub80  %0 = load i64, ptr %arrayidx6, align 881  %incdec.ptr = getelementptr inbounds i64, ptr %B.addr.11, i64 182  store i64 %0, ptr %B.addr.11, align 883  %inc = add nsw i64 %j.02, 184  %exitcond = icmp ne i64 %inc, 1185  br i1 %exitcond, label %for.body3, label %for.inc786 87for.inc7:                                         ; preds = %for.body388  %scevgep = getelementptr i64, ptr %B.addr.04, i64 1089  %inc8 = add nsw i64 %i.03, 190  %exitcond5 = icmp ne i64 %inc8, 1191  br i1 %exitcond5, label %for.cond1.preheader, label %for.end992 93for.end9:                                         ; preds = %for.inc794  ret void95}96 97 98;;  for (long int i = 1; i <= n; i++)99;;    for (long int j = 1; j <= m; j++) {100;;      A[10*i + j] = 0;101;;      *B++ = A[10*i + j - 1];102 103define void @banerjee1(ptr %A, ptr %B, i64 %m, i64 %n) nounwind uwtable ssp {104; CHECK-LABEL: 'banerjee1'105; CHECK-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 0, ptr %arrayidx, align 8106; CHECK-NEXT:    da analyze - output [* *]!107; CHECK-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: %2 = load i64, ptr %arrayidx6, align 8108; CHECK-NEXT:    da analyze - flow [* <>]!109; CHECK-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 %2, ptr %B.addr.12, align 8110; CHECK-NEXT:    da analyze - confused!111; CHECK-NEXT:  Src: %2 = load i64, ptr %arrayidx6, align 8 --> Dst: %2 = load i64, ptr %arrayidx6, align 8112; CHECK-NEXT:    da analyze - input [* *]!113; CHECK-NEXT:  Src: %2 = load i64, ptr %arrayidx6, align 8 --> Dst: store i64 %2, ptr %B.addr.12, align 8114; CHECK-NEXT:    da analyze - confused!115; CHECK-NEXT:  Src: store i64 %2, ptr %B.addr.12, align 8 --> Dst: store i64 %2, ptr %B.addr.12, align 8116; CHECK-NEXT:    da analyze - confused!117;118; NORMALIZE-LABEL: 'banerjee1'119; NORMALIZE-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 0, ptr %arrayidx, align 8120; NORMALIZE-NEXT:    da analyze - output [* *]!121; NORMALIZE-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: %2 = load i64, ptr %arrayidx6, align 8122; NORMALIZE-NEXT:    da analyze - flow [* <>]!123; NORMALIZE-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 %2, ptr %B.addr.12, align 8124; NORMALIZE-NEXT:    da analyze - confused!125; NORMALIZE-NEXT:  Src: %2 = load i64, ptr %arrayidx6, align 8 --> Dst: %2 = load i64, ptr %arrayidx6, align 8126; NORMALIZE-NEXT:    da analyze - input [* *]!127; NORMALIZE-NEXT:  Src: %2 = load i64, ptr %arrayidx6, align 8 --> Dst: store i64 %2, ptr %B.addr.12, align 8128; NORMALIZE-NEXT:    da analyze - confused!129; NORMALIZE-NEXT:  Src: store i64 %2, ptr %B.addr.12, align 8 --> Dst: store i64 %2, ptr %B.addr.12, align 8130; NORMALIZE-NEXT:    da analyze - confused!131;132; DELIN-LABEL: 'banerjee1'133; DELIN-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 0, ptr %arrayidx, align 8134; DELIN-NEXT:    da analyze - output [* *]!135; DELIN-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: %2 = load i64, ptr %arrayidx6, align 8136; DELIN-NEXT:    da analyze - flow [* <>]!137; DELIN-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 %2, ptr %B.addr.12, align 8138; DELIN-NEXT:    da analyze - confused!139; DELIN-NEXT:  Src: %2 = load i64, ptr %arrayidx6, align 8 --> Dst: %2 = load i64, ptr %arrayidx6, align 8140; DELIN-NEXT:    da analyze - input [* *]!141; DELIN-NEXT:  Src: %2 = load i64, ptr %arrayidx6, align 8 --> Dst: store i64 %2, ptr %B.addr.12, align 8142; DELIN-NEXT:    da analyze - confused!143; DELIN-NEXT:  Src: store i64 %2, ptr %B.addr.12, align 8 --> Dst: store i64 %2, ptr %B.addr.12, align 8144; DELIN-NEXT:    da analyze - confused!145;146entry:147  %cmp4 = icmp sgt i64 %n, 0148  br i1 %cmp4, label %for.cond1.preheader.preheader, label %for.end9149 150for.cond1.preheader.preheader:                    ; preds = %entry151  %0 = add i64 %n, 1152  br label %for.cond1.preheader153 154for.cond1.preheader:                              ; preds = %for.cond1.preheader.preheader, %for.inc7155  %B.addr.06 = phi ptr [ %B.addr.1.lcssa, %for.inc7 ], [ %B, %for.cond1.preheader.preheader ]156  %i.05 = phi i64 [ %inc8, %for.inc7 ], [ 1, %for.cond1.preheader.preheader ]157  %1 = add i64 %m, 1158  %cmp21 = icmp sgt i64 %m, 0159  br i1 %cmp21, label %for.body3.preheader, label %for.inc7160 161for.body3.preheader:                              ; preds = %for.cond1.preheader162  br label %for.body3163 164for.body3:                                        ; preds = %for.body3.preheader, %for.body3165  %j.03 = phi i64 [ %inc, %for.body3 ], [ 1, %for.body3.preheader ]166  %B.addr.12 = phi ptr [ %incdec.ptr, %for.body3 ], [ %B.addr.06, %for.body3.preheader ]167  %mul = mul nsw i64 %i.05, 10168  %add = add nsw i64 %mul, %j.03169  %arrayidx = getelementptr inbounds i64, ptr %A, i64 %add170  store i64 0, ptr %arrayidx, align 8171  %mul4 = mul nsw i64 %i.05, 10172  %add5 = add nsw i64 %mul4, %j.03173  %sub = add nsw i64 %add5, -1174  %arrayidx6 = getelementptr inbounds i64, ptr %A, i64 %sub175  %2 = load i64, ptr %arrayidx6, align 8176  %incdec.ptr = getelementptr inbounds i64, ptr %B.addr.12, i64 1177  store i64 %2, ptr %B.addr.12, align 8178  %inc = add nsw i64 %j.03, 1179  %exitcond = icmp eq i64 %inc, %1180  br i1 %exitcond, label %for.inc7.loopexit, label %for.body3181 182for.inc7.loopexit:                                ; preds = %for.body3183  %scevgep = getelementptr i64, ptr %B.addr.06, i64 %m184  br label %for.inc7185 186for.inc7:                                         ; preds = %for.inc7.loopexit, %for.cond1.preheader187  %B.addr.1.lcssa = phi ptr [ %B.addr.06, %for.cond1.preheader ], [ %scevgep, %for.inc7.loopexit ]188  %inc8 = add nsw i64 %i.05, 1189  %exitcond7 = icmp eq i64 %inc8, %0190  br i1 %exitcond7, label %for.end9.loopexit, label %for.cond1.preheader191 192for.end9.loopexit:                                ; preds = %for.inc7193  br label %for.end9194 195for.end9:                                         ; preds = %for.end9.loopexit, %entry196  ret void197}198 199 200;;  for (long int i = 0; i < 10; i++)201;;    for (long int j = 0; j < 10; j++) {202;;      A[10*i + j] = 0;203;;      *B++ = A[10*i + j + 100];204 205define void @banerjee2(ptr %A, ptr %B, i64 %m, i64 %n) nounwind uwtable ssp {206; CHECK-LABEL: 'banerjee2'207; CHECK-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 0, ptr %arrayidx, align 8208; CHECK-NEXT:    da analyze - none!209; CHECK-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: %0 = load i64, ptr %arrayidx7, align 8210; CHECK-NEXT:    da analyze - none!211; CHECK-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8212; CHECK-NEXT:    da analyze - confused!213; CHECK-NEXT:  Src: %0 = load i64, ptr %arrayidx7, align 8 --> Dst: %0 = load i64, ptr %arrayidx7, align 8214; CHECK-NEXT:    da analyze - none!215; CHECK-NEXT:  Src: %0 = load i64, ptr %arrayidx7, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8216; CHECK-NEXT:    da analyze - confused!217; CHECK-NEXT:  Src: store i64 %0, ptr %B.addr.11, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8218; CHECK-NEXT:    da analyze - none!219;220; NORMALIZE-LABEL: 'banerjee2'221; NORMALIZE-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 0, ptr %arrayidx, align 8222; NORMALIZE-NEXT:    da analyze - none!223; NORMALIZE-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: %0 = load i64, ptr %arrayidx7, align 8224; NORMALIZE-NEXT:    da analyze - none!225; NORMALIZE-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8226; NORMALIZE-NEXT:    da analyze - confused!227; NORMALIZE-NEXT:  Src: %0 = load i64, ptr %arrayidx7, align 8 --> Dst: %0 = load i64, ptr %arrayidx7, align 8228; NORMALIZE-NEXT:    da analyze - none!229; NORMALIZE-NEXT:  Src: %0 = load i64, ptr %arrayidx7, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8230; NORMALIZE-NEXT:    da analyze - confused!231; NORMALIZE-NEXT:  Src: store i64 %0, ptr %B.addr.11, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8232; NORMALIZE-NEXT:    da analyze - none!233;234; DELIN-LABEL: 'banerjee2'235; DELIN-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 0, ptr %arrayidx, align 8236; DELIN-NEXT:    da analyze - none!237; DELIN-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: %0 = load i64, ptr %arrayidx7, align 8238; DELIN-NEXT:    da analyze - none!239; DELIN-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8240; DELIN-NEXT:    da analyze - confused!241; DELIN-NEXT:  Src: %0 = load i64, ptr %arrayidx7, align 8 --> Dst: %0 = load i64, ptr %arrayidx7, align 8242; DELIN-NEXT:    da analyze - none!243; DELIN-NEXT:  Src: %0 = load i64, ptr %arrayidx7, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8244; DELIN-NEXT:    da analyze - confused!245; DELIN-NEXT:  Src: store i64 %0, ptr %B.addr.11, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8246; DELIN-NEXT:    da analyze - none!247;248entry:249  br label %for.cond1.preheader250 251for.cond1.preheader:                              ; preds = %entry, %for.inc8252  %B.addr.04 = phi ptr [ %B, %entry ], [ %scevgep, %for.inc8 ]253  %i.03 = phi i64 [ 0, %entry ], [ %inc9, %for.inc8 ]254  br label %for.body3255 256for.body3:                                        ; preds = %for.cond1.preheader, %for.body3257  %j.02 = phi i64 [ 0, %for.cond1.preheader ], [ %inc, %for.body3 ]258  %B.addr.11 = phi ptr [ %B.addr.04, %for.cond1.preheader ], [ %incdec.ptr, %for.body3 ]259  %mul = mul nsw i64 %i.03, 10260  %add = add nsw i64 %mul, %j.02261  %arrayidx = getelementptr inbounds i64, ptr %A, i64 %add262  store i64 0, ptr %arrayidx, align 8263  %mul4 = mul nsw i64 %i.03, 10264  %add5 = add nsw i64 %mul4, %j.02265  %add6 = add nsw i64 %add5, 100266  %arrayidx7 = getelementptr inbounds i64, ptr %A, i64 %add6267  %0 = load i64, ptr %arrayidx7, align 8268  %incdec.ptr = getelementptr inbounds i64, ptr %B.addr.11, i64 1269  store i64 %0, ptr %B.addr.11, align 8270  %inc = add nsw i64 %j.02, 1271  %exitcond = icmp ne i64 %inc, 10272  br i1 %exitcond, label %for.body3, label %for.inc8273 274for.inc8:                                         ; preds = %for.body3275  %scevgep = getelementptr i64, ptr %B.addr.04, i64 10276  %inc9 = add nsw i64 %i.03, 1277  %exitcond5 = icmp ne i64 %inc9, 10278  br i1 %exitcond5, label %for.cond1.preheader, label %for.end10279 280for.end10:                                        ; preds = %for.inc8281  ret void282}283 284 285;;  for (long int i = 0; i < 10; i++)286;;    for (long int j = 0; j < 10; j++) {287;;      A[10*i + j] = 0;288;;      *B++ = A[10*i + j + 99];289 290define void @banerjee3(ptr %A, ptr %B, i64 %m, i64 %n) nounwind uwtable ssp {291; CHECK-LABEL: 'banerjee3'292; CHECK-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 0, ptr %arrayidx, align 8293; CHECK-NEXT:    da analyze - none!294; CHECK-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: %0 = load i64, ptr %arrayidx7, align 8295; CHECK-NEXT:    da analyze - flow [> >]!296; CHECK-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8297; CHECK-NEXT:    da analyze - confused!298; CHECK-NEXT:  Src: %0 = load i64, ptr %arrayidx7, align 8 --> Dst: %0 = load i64, ptr %arrayidx7, align 8299; CHECK-NEXT:    da analyze - none!300; CHECK-NEXT:  Src: %0 = load i64, ptr %arrayidx7, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8301; CHECK-NEXT:    da analyze - confused!302; CHECK-NEXT:  Src: store i64 %0, ptr %B.addr.11, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8303; CHECK-NEXT:    da analyze - none!304;305; NORMALIZE-LABEL: 'banerjee3'306; NORMALIZE-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 0, ptr %arrayidx, align 8307; NORMALIZE-NEXT:    da analyze - none!308; NORMALIZE-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: %0 = load i64, ptr %arrayidx7, align 8309; NORMALIZE-NEXT:    da analyze - normalized - anti [< <]!310; NORMALIZE-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8311; NORMALIZE-NEXT:    da analyze - confused!312; NORMALIZE-NEXT:  Src: %0 = load i64, ptr %arrayidx7, align 8 --> Dst: %0 = load i64, ptr %arrayidx7, align 8313; NORMALIZE-NEXT:    da analyze - none!314; NORMALIZE-NEXT:  Src: %0 = load i64, ptr %arrayidx7, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8315; NORMALIZE-NEXT:    da analyze - confused!316; NORMALIZE-NEXT:  Src: store i64 %0, ptr %B.addr.11, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8317; NORMALIZE-NEXT:    da analyze - none!318;319; DELIN-LABEL: 'banerjee3'320; DELIN-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 0, ptr %arrayidx, align 8321; DELIN-NEXT:    da analyze - none!322; DELIN-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: %0 = load i64, ptr %arrayidx7, align 8323; DELIN-NEXT:    da analyze - flow [> >]!324; DELIN-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8325; DELIN-NEXT:    da analyze - confused!326; DELIN-NEXT:  Src: %0 = load i64, ptr %arrayidx7, align 8 --> Dst: %0 = load i64, ptr %arrayidx7, align 8327; DELIN-NEXT:    da analyze - none!328; DELIN-NEXT:  Src: %0 = load i64, ptr %arrayidx7, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8329; DELIN-NEXT:    da analyze - confused!330; DELIN-NEXT:  Src: store i64 %0, ptr %B.addr.11, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8331; DELIN-NEXT:    da analyze - none!332;333entry:334  br label %for.cond1.preheader335 336for.cond1.preheader:                              ; preds = %entry, %for.inc8337  %B.addr.04 = phi ptr [ %B, %entry ], [ %scevgep, %for.inc8 ]338  %i.03 = phi i64 [ 0, %entry ], [ %inc9, %for.inc8 ]339  br label %for.body3340 341for.body3:                                        ; preds = %for.cond1.preheader, %for.body3342  %j.02 = phi i64 [ 0, %for.cond1.preheader ], [ %inc, %for.body3 ]343  %B.addr.11 = phi ptr [ %B.addr.04, %for.cond1.preheader ], [ %incdec.ptr, %for.body3 ]344  %mul = mul nsw i64 %i.03, 10345  %add = add nsw i64 %mul, %j.02346  %arrayidx = getelementptr inbounds i64, ptr %A, i64 %add347  store i64 0, ptr %arrayidx, align 8348  %mul4 = mul nsw i64 %i.03, 10349  %add5 = add nsw i64 %mul4, %j.02350  %add6 = add nsw i64 %add5, 99351  %arrayidx7 = getelementptr inbounds i64, ptr %A, i64 %add6352  %0 = load i64, ptr %arrayidx7, align 8353  %incdec.ptr = getelementptr inbounds i64, ptr %B.addr.11, i64 1354  store i64 %0, ptr %B.addr.11, align 8355  %inc = add nsw i64 %j.02, 1356  %exitcond = icmp ne i64 %inc, 10357  br i1 %exitcond, label %for.body3, label %for.inc8358 359for.inc8:                                         ; preds = %for.body3360  %scevgep = getelementptr i64, ptr %B.addr.04, i64 10361  %inc9 = add nsw i64 %i.03, 1362  %exitcond5 = icmp ne i64 %inc9, 10363  br i1 %exitcond5, label %for.cond1.preheader, label %for.end10364 365for.end10:                                        ; preds = %for.inc8366  ret void367}368 369 370;;  for (long int i = 0; i < 10; i++)371;;    for (long int j = 0; j < 10; j++) {372;;      A[10*i + j] = 0;373;;      *B++ = A[10*i + j - 100];374 375define void @banerjee4(ptr %A, ptr %B, i64 %m, i64 %n) nounwind uwtable ssp {376; CHECK-LABEL: 'banerjee4'377; CHECK-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 0, ptr %arrayidx, align 8378; CHECK-NEXT:    da analyze - none!379; CHECK-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: %0 = load i64, ptr %arrayidx6, align 8380; CHECK-NEXT:    da analyze - none!381; CHECK-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8382; CHECK-NEXT:    da analyze - confused!383; CHECK-NEXT:  Src: %0 = load i64, ptr %arrayidx6, align 8 --> Dst: %0 = load i64, ptr %arrayidx6, align 8384; CHECK-NEXT:    da analyze - none!385; CHECK-NEXT:  Src: %0 = load i64, ptr %arrayidx6, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8386; CHECK-NEXT:    da analyze - confused!387; CHECK-NEXT:  Src: store i64 %0, ptr %B.addr.11, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8388; CHECK-NEXT:    da analyze - none!389;390; NORMALIZE-LABEL: 'banerjee4'391; NORMALIZE-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 0, ptr %arrayidx, align 8392; NORMALIZE-NEXT:    da analyze - none!393; NORMALIZE-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: %0 = load i64, ptr %arrayidx6, align 8394; NORMALIZE-NEXT:    da analyze - none!395; NORMALIZE-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8396; NORMALIZE-NEXT:    da analyze - confused!397; NORMALIZE-NEXT:  Src: %0 = load i64, ptr %arrayidx6, align 8 --> Dst: %0 = load i64, ptr %arrayidx6, align 8398; NORMALIZE-NEXT:    da analyze - none!399; NORMALIZE-NEXT:  Src: %0 = load i64, ptr %arrayidx6, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8400; NORMALIZE-NEXT:    da analyze - confused!401; NORMALIZE-NEXT:  Src: store i64 %0, ptr %B.addr.11, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8402; NORMALIZE-NEXT:    da analyze - none!403;404; DELIN-LABEL: 'banerjee4'405; DELIN-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 0, ptr %arrayidx, align 8406; DELIN-NEXT:    da analyze - none!407; DELIN-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: %0 = load i64, ptr %arrayidx6, align 8408; DELIN-NEXT:    da analyze - none!409; DELIN-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8410; DELIN-NEXT:    da analyze - confused!411; DELIN-NEXT:  Src: %0 = load i64, ptr %arrayidx6, align 8 --> Dst: %0 = load i64, ptr %arrayidx6, align 8412; DELIN-NEXT:    da analyze - none!413; DELIN-NEXT:  Src: %0 = load i64, ptr %arrayidx6, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8414; DELIN-NEXT:    da analyze - confused!415; DELIN-NEXT:  Src: store i64 %0, ptr %B.addr.11, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8416; DELIN-NEXT:    da analyze - none!417;418entry:419  br label %for.cond1.preheader420 421for.cond1.preheader:                              ; preds = %entry, %for.inc7422  %B.addr.04 = phi ptr [ %B, %entry ], [ %scevgep, %for.inc7 ]423  %i.03 = phi i64 [ 0, %entry ], [ %inc8, %for.inc7 ]424  br label %for.body3425 426for.body3:                                        ; preds = %for.cond1.preheader, %for.body3427  %j.02 = phi i64 [ 0, %for.cond1.preheader ], [ %inc, %for.body3 ]428  %B.addr.11 = phi ptr [ %B.addr.04, %for.cond1.preheader ], [ %incdec.ptr, %for.body3 ]429  %mul = mul nsw i64 %i.03, 10430  %add = add nsw i64 %mul, %j.02431  %arrayidx = getelementptr inbounds i64, ptr %A, i64 %add432  store i64 0, ptr %arrayidx, align 8433  %mul4 = mul nsw i64 %i.03, 10434  %add5 = add nsw i64 %mul4, %j.02435  %sub = add nsw i64 %add5, -100436  %arrayidx6 = getelementptr inbounds i64, ptr %A, i64 %sub437  %0 = load i64, ptr %arrayidx6, align 8438  %incdec.ptr = getelementptr inbounds i64, ptr %B.addr.11, i64 1439  store i64 %0, ptr %B.addr.11, align 8440  %inc = add nsw i64 %j.02, 1441  %exitcond = icmp ne i64 %inc, 10442  br i1 %exitcond, label %for.body3, label %for.inc7443 444for.inc7:                                         ; preds = %for.body3445  %scevgep = getelementptr i64, ptr %B.addr.04, i64 10446  %inc8 = add nsw i64 %i.03, 1447  %exitcond5 = icmp ne i64 %inc8, 10448  br i1 %exitcond5, label %for.cond1.preheader, label %for.end9449 450for.end9:                                         ; preds = %for.inc7451  ret void452}453 454 455;;  for (long int i = 0; i < 10; i++)456;;    for (long int j = 0; j < 10; j++) {457;;      A[10*i + j] = 0;458;;      *B++ = A[10*i + j - 99];459 460define void @banerjee5(ptr %A, ptr %B, i64 %m, i64 %n) nounwind uwtable ssp {461; CHECK-LABEL: 'banerjee5'462; CHECK-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 0, ptr %arrayidx, align 8463; CHECK-NEXT:    da analyze - none!464; CHECK-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: %0 = load i64, ptr %arrayidx6, align 8465; CHECK-NEXT:    da analyze - flow [< <]!466; CHECK-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8467; CHECK-NEXT:    da analyze - confused!468; CHECK-NEXT:  Src: %0 = load i64, ptr %arrayidx6, align 8 --> Dst: %0 = load i64, ptr %arrayidx6, align 8469; CHECK-NEXT:    da analyze - none!470; CHECK-NEXT:  Src: %0 = load i64, ptr %arrayidx6, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8471; CHECK-NEXT:    da analyze - confused!472; CHECK-NEXT:  Src: store i64 %0, ptr %B.addr.11, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8473; CHECK-NEXT:    da analyze - none!474;475; NORMALIZE-LABEL: 'banerjee5'476; NORMALIZE-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 0, ptr %arrayidx, align 8477; NORMALIZE-NEXT:    da analyze - none!478; NORMALIZE-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: %0 = load i64, ptr %arrayidx6, align 8479; NORMALIZE-NEXT:    da analyze - flow [< <]!480; NORMALIZE-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8481; NORMALIZE-NEXT:    da analyze - confused!482; NORMALIZE-NEXT:  Src: %0 = load i64, ptr %arrayidx6, align 8 --> Dst: %0 = load i64, ptr %arrayidx6, align 8483; NORMALIZE-NEXT:    da analyze - none!484; NORMALIZE-NEXT:  Src: %0 = load i64, ptr %arrayidx6, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8485; NORMALIZE-NEXT:    da analyze - confused!486; NORMALIZE-NEXT:  Src: store i64 %0, ptr %B.addr.11, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8487; NORMALIZE-NEXT:    da analyze - none!488;489; DELIN-LABEL: 'banerjee5'490; DELIN-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 0, ptr %arrayidx, align 8491; DELIN-NEXT:    da analyze - none!492; DELIN-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: %0 = load i64, ptr %arrayidx6, align 8493; DELIN-NEXT:    da analyze - flow [< <]!494; DELIN-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8495; DELIN-NEXT:    da analyze - confused!496; DELIN-NEXT:  Src: %0 = load i64, ptr %arrayidx6, align 8 --> Dst: %0 = load i64, ptr %arrayidx6, align 8497; DELIN-NEXT:    da analyze - none!498; DELIN-NEXT:  Src: %0 = load i64, ptr %arrayidx6, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8499; DELIN-NEXT:    da analyze - confused!500; DELIN-NEXT:  Src: store i64 %0, ptr %B.addr.11, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8501; DELIN-NEXT:    da analyze - none!502;503entry:504  br label %for.cond1.preheader505 506for.cond1.preheader:                              ; preds = %entry, %for.inc7507  %B.addr.04 = phi ptr [ %B, %entry ], [ %scevgep, %for.inc7 ]508  %i.03 = phi i64 [ 0, %entry ], [ %inc8, %for.inc7 ]509  br label %for.body3510 511for.body3:                                        ; preds = %for.cond1.preheader, %for.body3512  %j.02 = phi i64 [ 0, %for.cond1.preheader ], [ %inc, %for.body3 ]513  %B.addr.11 = phi ptr [ %B.addr.04, %for.cond1.preheader ], [ %incdec.ptr, %for.body3 ]514  %mul = mul nsw i64 %i.03, 10515  %add = add nsw i64 %mul, %j.02516  %arrayidx = getelementptr inbounds i64, ptr %A, i64 %add517  store i64 0, ptr %arrayidx, align 8518  %mul4 = mul nsw i64 %i.03, 10519  %add5 = add nsw i64 %mul4, %j.02520  %sub = add nsw i64 %add5, -99521  %arrayidx6 = getelementptr inbounds i64, ptr %A, i64 %sub522  %0 = load i64, ptr %arrayidx6, align 8523  %incdec.ptr = getelementptr inbounds i64, ptr %B.addr.11, i64 1524  store i64 %0, ptr %B.addr.11, align 8525  %inc = add nsw i64 %j.02, 1526  %exitcond = icmp ne i64 %inc, 10527  br i1 %exitcond, label %for.body3, label %for.inc7528 529for.inc7:                                         ; preds = %for.body3530  %scevgep = getelementptr i64, ptr %B.addr.04, i64 10531  %inc8 = add nsw i64 %i.03, 1532  %exitcond5 = icmp ne i64 %inc8, 10533  br i1 %exitcond5, label %for.cond1.preheader, label %for.end9534 535for.end9:                                         ; preds = %for.inc7536  ret void537}538 539 540;;  for (long int i = 0; i < 10; i++)541;;    for (long int j = 0; j < 10; j++) {542;;      A[10*i + j] = 0;543;;      *B++ = A[10*i + j + 9];544 545define void @banerjee6(ptr %A, ptr %B, i64 %m, i64 %n) nounwind uwtable ssp {546; CHECK-LABEL: 'banerjee6'547; CHECK-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 0, ptr %arrayidx, align 8548; CHECK-NEXT:    da analyze - none!549; CHECK-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: %0 = load i64, ptr %arrayidx7, align 8550; CHECK-NEXT:    da analyze - flow [=> <>]!551; CHECK-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8552; CHECK-NEXT:    da analyze - confused!553; CHECK-NEXT:  Src: %0 = load i64, ptr %arrayidx7, align 8 --> Dst: %0 = load i64, ptr %arrayidx7, align 8554; CHECK-NEXT:    da analyze - none!555; CHECK-NEXT:  Src: %0 = load i64, ptr %arrayidx7, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8556; CHECK-NEXT:    da analyze - confused!557; CHECK-NEXT:  Src: store i64 %0, ptr %B.addr.11, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8558; CHECK-NEXT:    da analyze - none!559;560; NORMALIZE-LABEL: 'banerjee6'561; NORMALIZE-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 0, ptr %arrayidx, align 8562; NORMALIZE-NEXT:    da analyze - none!563; NORMALIZE-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: %0 = load i64, ptr %arrayidx7, align 8564; NORMALIZE-NEXT:    da analyze - normalized - anti [<= <>]!565; NORMALIZE-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8566; NORMALIZE-NEXT:    da analyze - confused!567; NORMALIZE-NEXT:  Src: %0 = load i64, ptr %arrayidx7, align 8 --> Dst: %0 = load i64, ptr %arrayidx7, align 8568; NORMALIZE-NEXT:    da analyze - none!569; NORMALIZE-NEXT:  Src: %0 = load i64, ptr %arrayidx7, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8570; NORMALIZE-NEXT:    da analyze - confused!571; NORMALIZE-NEXT:  Src: store i64 %0, ptr %B.addr.11, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8572; NORMALIZE-NEXT:    da analyze - none!573;574; DELIN-LABEL: 'banerjee6'575; DELIN-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 0, ptr %arrayidx, align 8576; DELIN-NEXT:    da analyze - none!577; DELIN-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: %0 = load i64, ptr %arrayidx7, align 8578; DELIN-NEXT:    da analyze - flow [=> <>]!579; DELIN-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8580; DELIN-NEXT:    da analyze - confused!581; DELIN-NEXT:  Src: %0 = load i64, ptr %arrayidx7, align 8 --> Dst: %0 = load i64, ptr %arrayidx7, align 8582; DELIN-NEXT:    da analyze - none!583; DELIN-NEXT:  Src: %0 = load i64, ptr %arrayidx7, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8584; DELIN-NEXT:    da analyze - confused!585; DELIN-NEXT:  Src: store i64 %0, ptr %B.addr.11, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8586; DELIN-NEXT:    da analyze - none!587;588entry:589  br label %for.cond1.preheader590 591for.cond1.preheader:                              ; preds = %entry, %for.inc8592  %B.addr.04 = phi ptr [ %B, %entry ], [ %scevgep, %for.inc8 ]593  %i.03 = phi i64 [ 0, %entry ], [ %inc9, %for.inc8 ]594  br label %for.body3595 596for.body3:                                        ; preds = %for.cond1.preheader, %for.body3597  %j.02 = phi i64 [ 0, %for.cond1.preheader ], [ %inc, %for.body3 ]598  %B.addr.11 = phi ptr [ %B.addr.04, %for.cond1.preheader ], [ %incdec.ptr, %for.body3 ]599  %mul = mul nsw i64 %i.03, 10600  %add = add nsw i64 %mul, %j.02601  %arrayidx = getelementptr inbounds i64, ptr %A, i64 %add602  store i64 0, ptr %arrayidx, align 8603  %mul4 = mul nsw i64 %i.03, 10604  %add5 = add nsw i64 %mul4, %j.02605  %add6 = add nsw i64 %add5, 9606  %arrayidx7 = getelementptr inbounds i64, ptr %A, i64 %add6607  %0 = load i64, ptr %arrayidx7, align 8608  %incdec.ptr = getelementptr inbounds i64, ptr %B.addr.11, i64 1609  store i64 %0, ptr %B.addr.11, align 8610  %inc = add nsw i64 %j.02, 1611  %exitcond = icmp ne i64 %inc, 10612  br i1 %exitcond, label %for.body3, label %for.inc8613 614for.inc8:                                         ; preds = %for.body3615  %scevgep = getelementptr i64, ptr %B.addr.04, i64 10616  %inc9 = add nsw i64 %i.03, 1617  %exitcond5 = icmp ne i64 %inc9, 10618  br i1 %exitcond5, label %for.cond1.preheader, label %for.end10619 620for.end10:                                        ; preds = %for.inc8621  ret void622}623 624 625;;  for (long int i = 0; i < 10; i++)626;;    for (long int j = 0; j < 10; j++) {627;;      A[10*i + j] = 0;628;;      *B++ = A[10*i + j + 10];629 630define void @banerjee7(ptr %A, ptr %B, i64 %m, i64 %n) nounwind uwtable ssp {631; CHECK-LABEL: 'banerjee7'632; CHECK-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 0, ptr %arrayidx, align 8633; CHECK-NEXT:    da analyze - none!634; CHECK-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: %0 = load i64, ptr %arrayidx7, align 8635; CHECK-NEXT:    da analyze - flow [> <=]!636; CHECK-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8637; CHECK-NEXT:    da analyze - confused!638; CHECK-NEXT:  Src: %0 = load i64, ptr %arrayidx7, align 8 --> Dst: %0 = load i64, ptr %arrayidx7, align 8639; CHECK-NEXT:    da analyze - none!640; CHECK-NEXT:  Src: %0 = load i64, ptr %arrayidx7, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8641; CHECK-NEXT:    da analyze - confused!642; CHECK-NEXT:  Src: store i64 %0, ptr %B.addr.11, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8643; CHECK-NEXT:    da analyze - none!644;645; NORMALIZE-LABEL: 'banerjee7'646; NORMALIZE-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 0, ptr %arrayidx, align 8647; NORMALIZE-NEXT:    da analyze - none!648; NORMALIZE-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: %0 = load i64, ptr %arrayidx7, align 8649; NORMALIZE-NEXT:    da analyze - normalized - anti [< =>]!650; NORMALIZE-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8651; NORMALIZE-NEXT:    da analyze - confused!652; NORMALIZE-NEXT:  Src: %0 = load i64, ptr %arrayidx7, align 8 --> Dst: %0 = load i64, ptr %arrayidx7, align 8653; NORMALIZE-NEXT:    da analyze - none!654; NORMALIZE-NEXT:  Src: %0 = load i64, ptr %arrayidx7, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8655; NORMALIZE-NEXT:    da analyze - confused!656; NORMALIZE-NEXT:  Src: store i64 %0, ptr %B.addr.11, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8657; NORMALIZE-NEXT:    da analyze - none!658;659; DELIN-LABEL: 'banerjee7'660; DELIN-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 0, ptr %arrayidx, align 8661; DELIN-NEXT:    da analyze - none!662; DELIN-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: %0 = load i64, ptr %arrayidx7, align 8663; DELIN-NEXT:    da analyze - consistent flow [-1 0]!664; DELIN-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8665; DELIN-NEXT:    da analyze - confused!666; DELIN-NEXT:  Src: %0 = load i64, ptr %arrayidx7, align 8 --> Dst: %0 = load i64, ptr %arrayidx7, align 8667; DELIN-NEXT:    da analyze - none!668; DELIN-NEXT:  Src: %0 = load i64, ptr %arrayidx7, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8669; DELIN-NEXT:    da analyze - confused!670; DELIN-NEXT:  Src: store i64 %0, ptr %B.addr.11, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8671; DELIN-NEXT:    da analyze - none!672;673entry:674  br label %for.cond1.preheader675 676for.cond1.preheader:                              ; preds = %entry, %for.inc8677  %B.addr.04 = phi ptr [ %B, %entry ], [ %scevgep, %for.inc8 ]678  %i.03 = phi i64 [ 0, %entry ], [ %inc9, %for.inc8 ]679  br label %for.body3680 681for.body3:                                        ; preds = %for.cond1.preheader, %for.body3682  %j.02 = phi i64 [ 0, %for.cond1.preheader ], [ %inc, %for.body3 ]683  %B.addr.11 = phi ptr [ %B.addr.04, %for.cond1.preheader ], [ %incdec.ptr, %for.body3 ]684  %mul = mul nsw i64 %i.03, 10685  %add = add nsw i64 %mul, %j.02686  %arrayidx = getelementptr inbounds i64, ptr %A, i64 %add687  store i64 0, ptr %arrayidx, align 8688  %mul4 = mul nsw i64 %i.03, 10689  %add5 = add nsw i64 %mul4, %j.02690  %add6 = add nsw i64 %add5, 10691  %arrayidx7 = getelementptr inbounds i64, ptr %A, i64 %add6692  %0 = load i64, ptr %arrayidx7, align 8693  %incdec.ptr = getelementptr inbounds i64, ptr %B.addr.11, i64 1694  store i64 %0, ptr %B.addr.11, align 8695  %inc = add nsw i64 %j.02, 1696  %exitcond = icmp ne i64 %inc, 10697  br i1 %exitcond, label %for.body3, label %for.inc8698 699for.inc8:                                         ; preds = %for.body3700  %scevgep = getelementptr i64, ptr %B.addr.04, i64 10701  %inc9 = add nsw i64 %i.03, 1702  %exitcond5 = icmp ne i64 %inc9, 10703  br i1 %exitcond5, label %for.cond1.preheader, label %for.end10704 705for.end10:                                        ; preds = %for.inc8706  ret void707}708 709 710;;  for (long int i = 0; i < 10; i++)711;;    for (long int j = 0; j < 10; j++) {712;;      A[10*i + j] = 0;713;;      *B++ = A[10*i + j + 11];714 715define void @banerjee8(ptr %A, ptr %B, i64 %m, i64 %n) nounwind uwtable ssp {716; CHECK-LABEL: 'banerjee8'717; CHECK-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 0, ptr %arrayidx, align 8718; CHECK-NEXT:    da analyze - none!719; CHECK-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: %0 = load i64, ptr %arrayidx7, align 8720; CHECK-NEXT:    da analyze - flow [> <>]!721; CHECK-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8722; CHECK-NEXT:    da analyze - confused!723; CHECK-NEXT:  Src: %0 = load i64, ptr %arrayidx7, align 8 --> Dst: %0 = load i64, ptr %arrayidx7, align 8724; CHECK-NEXT:    da analyze - none!725; CHECK-NEXT:  Src: %0 = load i64, ptr %arrayidx7, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8726; CHECK-NEXT:    da analyze - confused!727; CHECK-NEXT:  Src: store i64 %0, ptr %B.addr.11, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8728; CHECK-NEXT:    da analyze - none!729;730; NORMALIZE-LABEL: 'banerjee8'731; NORMALIZE-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 0, ptr %arrayidx, align 8732; NORMALIZE-NEXT:    da analyze - none!733; NORMALIZE-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: %0 = load i64, ptr %arrayidx7, align 8734; NORMALIZE-NEXT:    da analyze - normalized - anti [< <>]!735; NORMALIZE-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8736; NORMALIZE-NEXT:    da analyze - confused!737; NORMALIZE-NEXT:  Src: %0 = load i64, ptr %arrayidx7, align 8 --> Dst: %0 = load i64, ptr %arrayidx7, align 8738; NORMALIZE-NEXT:    da analyze - none!739; NORMALIZE-NEXT:  Src: %0 = load i64, ptr %arrayidx7, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8740; NORMALIZE-NEXT:    da analyze - confused!741; NORMALIZE-NEXT:  Src: store i64 %0, ptr %B.addr.11, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8742; NORMALIZE-NEXT:    da analyze - none!743;744; DELIN-LABEL: 'banerjee8'745; DELIN-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 0, ptr %arrayidx, align 8746; DELIN-NEXT:    da analyze - none!747; DELIN-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: %0 = load i64, ptr %arrayidx7, align 8748; DELIN-NEXT:    da analyze - flow [> <>]!749; DELIN-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8750; DELIN-NEXT:    da analyze - confused!751; DELIN-NEXT:  Src: %0 = load i64, ptr %arrayidx7, align 8 --> Dst: %0 = load i64, ptr %arrayidx7, align 8752; DELIN-NEXT:    da analyze - none!753; DELIN-NEXT:  Src: %0 = load i64, ptr %arrayidx7, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8754; DELIN-NEXT:    da analyze - confused!755; DELIN-NEXT:  Src: store i64 %0, ptr %B.addr.11, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8756; DELIN-NEXT:    da analyze - none!757;758entry:759  br label %for.cond1.preheader760 761for.cond1.preheader:                              ; preds = %entry, %for.inc8762  %B.addr.04 = phi ptr [ %B, %entry ], [ %scevgep, %for.inc8 ]763  %i.03 = phi i64 [ 0, %entry ], [ %inc9, %for.inc8 ]764  br label %for.body3765 766for.body3:                                        ; preds = %for.cond1.preheader, %for.body3767  %j.02 = phi i64 [ 0, %for.cond1.preheader ], [ %inc, %for.body3 ]768  %B.addr.11 = phi ptr [ %B.addr.04, %for.cond1.preheader ], [ %incdec.ptr, %for.body3 ]769  %mul = mul nsw i64 %i.03, 10770  %add = add nsw i64 %mul, %j.02771  %arrayidx = getelementptr inbounds i64, ptr %A, i64 %add772  store i64 0, ptr %arrayidx, align 8773  %mul4 = mul nsw i64 %i.03, 10774  %add5 = add nsw i64 %mul4, %j.02775  %add6 = add nsw i64 %add5, 11776  %arrayidx7 = getelementptr inbounds i64, ptr %A, i64 %add6777  %0 = load i64, ptr %arrayidx7, align 8778  %incdec.ptr = getelementptr inbounds i64, ptr %B.addr.11, i64 1779  store i64 %0, ptr %B.addr.11, align 8780  %inc = add nsw i64 %j.02, 1781  %exitcond = icmp ne i64 %inc, 10782  br i1 %exitcond, label %for.body3, label %for.inc8783 784for.inc8:                                         ; preds = %for.body3785  %scevgep = getelementptr i64, ptr %B.addr.04, i64 10786  %inc9 = add nsw i64 %i.03, 1787  %exitcond5 = icmp ne i64 %inc9, 10788  br i1 %exitcond5, label %for.cond1.preheader, label %for.end10789 790for.end10:                                        ; preds = %for.inc8791  ret void792}793 794 795;;  for (long int i = 0; i < 20; i++)796;;    for (long int j = 0; j < 20; j++) {797;;      A[30*i + 500*j] = 0;798;;      *B++ = A[i - 500*j + 11];799 800define void @banerjee9(ptr %A, ptr %B, i64 %m, i64 %n) nounwind uwtable ssp {801; CHECK-LABEL: 'banerjee9'802; CHECK-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 0, ptr %arrayidx, align 8803; CHECK-NEXT:    da analyze - output [* *]!804; CHECK-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: %1 = load i64, ptr %arrayidx7, align 8805; CHECK-NEXT:    da analyze - flow [<= 0|<]!806; CHECK-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 %1, ptr %B.addr.11, align 8807; CHECK-NEXT:    da analyze - confused!808; CHECK-NEXT:  Src: %1 = load i64, ptr %arrayidx7, align 8 --> Dst: %1 = load i64, ptr %arrayidx7, align 8809; CHECK-NEXT:    da analyze - none!810; CHECK-NEXT:  Src: %1 = load i64, ptr %arrayidx7, align 8 --> Dst: store i64 %1, ptr %B.addr.11, align 8811; CHECK-NEXT:    da analyze - confused!812; CHECK-NEXT:  Src: store i64 %1, ptr %B.addr.11, align 8 --> Dst: store i64 %1, ptr %B.addr.11, align 8813; CHECK-NEXT:    da analyze - none!814;815; NORMALIZE-LABEL: 'banerjee9'816; NORMALIZE-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 0, ptr %arrayidx, align 8817; NORMALIZE-NEXT:    da analyze - output [* *]!818; NORMALIZE-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: %1 = load i64, ptr %arrayidx7, align 8819; NORMALIZE-NEXT:    da analyze - flow [<= 0|<]!820; NORMALIZE-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 %1, ptr %B.addr.11, align 8821; NORMALIZE-NEXT:    da analyze - confused!822; NORMALIZE-NEXT:  Src: %1 = load i64, ptr %arrayidx7, align 8 --> Dst: %1 = load i64, ptr %arrayidx7, align 8823; NORMALIZE-NEXT:    da analyze - none!824; NORMALIZE-NEXT:  Src: %1 = load i64, ptr %arrayidx7, align 8 --> Dst: store i64 %1, ptr %B.addr.11, align 8825; NORMALIZE-NEXT:    da analyze - confused!826; NORMALIZE-NEXT:  Src: store i64 %1, ptr %B.addr.11, align 8 --> Dst: store i64 %1, ptr %B.addr.11, align 8827; NORMALIZE-NEXT:    da analyze - none!828;829; DELIN-LABEL: 'banerjee9'830; DELIN-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 0, ptr %arrayidx, align 8831; DELIN-NEXT:    da analyze - output [* *]!832; DELIN-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: %1 = load i64, ptr %arrayidx7, align 8833; DELIN-NEXT:    da analyze - flow [<= 0|<]!834; DELIN-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 %1, ptr %B.addr.11, align 8835; DELIN-NEXT:    da analyze - confused!836; DELIN-NEXT:  Src: %1 = load i64, ptr %arrayidx7, align 8 --> Dst: %1 = load i64, ptr %arrayidx7, align 8837; DELIN-NEXT:    da analyze - none!838; DELIN-NEXT:  Src: %1 = load i64, ptr %arrayidx7, align 8 --> Dst: store i64 %1, ptr %B.addr.11, align 8839; DELIN-NEXT:    da analyze - confused!840; DELIN-NEXT:  Src: store i64 %1, ptr %B.addr.11, align 8 --> Dst: store i64 %1, ptr %B.addr.11, align 8841; DELIN-NEXT:    da analyze - none!842;843entry:844  br label %for.cond1.preheader845 846for.cond1.preheader:                              ; preds = %entry, %for.inc8847  %B.addr.04 = phi ptr [ %B, %entry ], [ %scevgep, %for.inc8 ]848  %i.03 = phi i64 [ 0, %entry ], [ %inc9, %for.inc8 ]849  br label %for.body3850 851for.body3:                                        ; preds = %for.cond1.preheader, %for.body3852  %j.02 = phi i64 [ 0, %for.cond1.preheader ], [ %inc, %for.body3 ]853  %B.addr.11 = phi ptr [ %B.addr.04, %for.cond1.preheader ], [ %incdec.ptr, %for.body3 ]854  %mul = mul nsw i64 %i.03, 30855  %mul4 = mul nsw i64 %j.02, 500856  %add = add nsw i64 %mul, %mul4857  %arrayidx = getelementptr inbounds i64, ptr %A, i64 %add858  store i64 0, ptr %arrayidx, align 8859  %0 = mul i64 %j.02, -500860  %sub = add i64 %i.03, %0861  %add6 = add nsw i64 %sub, 11862  %arrayidx7 = getelementptr inbounds i64, ptr %A, i64 %add6863  %1 = load i64, ptr %arrayidx7, align 8864  %incdec.ptr = getelementptr inbounds i64, ptr %B.addr.11, i64 1865  store i64 %1, ptr %B.addr.11, align 8866  %inc = add nsw i64 %j.02, 1867  %exitcond = icmp ne i64 %inc, 20868  br i1 %exitcond, label %for.body3, label %for.inc8869 870for.inc8:                                         ; preds = %for.body3871  %scevgep = getelementptr i64, ptr %B.addr.04, i64 20872  %inc9 = add nsw i64 %i.03, 1873  %exitcond5 = icmp ne i64 %inc9, 20874  br i1 %exitcond5, label %for.cond1.preheader, label %for.end10875 876for.end10:                                        ; preds = %for.inc8877  ret void878}879 880 881;;  for (long int i = 0; i < 20; i++)882;;    for (long int j = 0; j < 20; j++) {883;;      A[i + 500*j] = 0;884;;      *B++ = A[i - 500*j + 11];885 886define void @banerjee10(ptr %A, ptr %B, i64 %m, i64 %n) nounwind uwtable ssp {887; CHECK-LABEL: 'banerjee10'888; CHECK-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 0, ptr %arrayidx, align 8889; CHECK-NEXT:    da analyze - none!890; CHECK-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: %1 = load i64, ptr %arrayidx6, align 8891; CHECK-NEXT:    da analyze - flow [<> 0]!892; CHECK-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 %1, ptr %B.addr.11, align 8893; CHECK-NEXT:    da analyze - confused!894; CHECK-NEXT:  Src: %1 = load i64, ptr %arrayidx6, align 8 --> Dst: %1 = load i64, ptr %arrayidx6, align 8895; CHECK-NEXT:    da analyze - none!896; CHECK-NEXT:  Src: %1 = load i64, ptr %arrayidx6, align 8 --> Dst: store i64 %1, ptr %B.addr.11, align 8897; CHECK-NEXT:    da analyze - confused!898; CHECK-NEXT:  Src: store i64 %1, ptr %B.addr.11, align 8 --> Dst: store i64 %1, ptr %B.addr.11, align 8899; CHECK-NEXT:    da analyze - none!900;901; NORMALIZE-LABEL: 'banerjee10'902; NORMALIZE-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 0, ptr %arrayidx, align 8903; NORMALIZE-NEXT:    da analyze - none!904; NORMALIZE-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: %1 = load i64, ptr %arrayidx6, align 8905; NORMALIZE-NEXT:    da analyze - flow [<> 0]!906; NORMALIZE-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 %1, ptr %B.addr.11, align 8907; NORMALIZE-NEXT:    da analyze - confused!908; NORMALIZE-NEXT:  Src: %1 = load i64, ptr %arrayidx6, align 8 --> Dst: %1 = load i64, ptr %arrayidx6, align 8909; NORMALIZE-NEXT:    da analyze - none!910; NORMALIZE-NEXT:  Src: %1 = load i64, ptr %arrayidx6, align 8 --> Dst: store i64 %1, ptr %B.addr.11, align 8911; NORMALIZE-NEXT:    da analyze - confused!912; NORMALIZE-NEXT:  Src: store i64 %1, ptr %B.addr.11, align 8 --> Dst: store i64 %1, ptr %B.addr.11, align 8913; NORMALIZE-NEXT:    da analyze - none!914;915; DELIN-LABEL: 'banerjee10'916; DELIN-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 0, ptr %arrayidx, align 8917; DELIN-NEXT:    da analyze - none!918; DELIN-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: %1 = load i64, ptr %arrayidx6, align 8919; DELIN-NEXT:    da analyze - flow [-11 0]!920; DELIN-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 %1, ptr %B.addr.11, align 8921; DELIN-NEXT:    da analyze - confused!922; DELIN-NEXT:  Src: %1 = load i64, ptr %arrayidx6, align 8 --> Dst: %1 = load i64, ptr %arrayidx6, align 8923; DELIN-NEXT:    da analyze - none!924; DELIN-NEXT:  Src: %1 = load i64, ptr %arrayidx6, align 8 --> Dst: store i64 %1, ptr %B.addr.11, align 8925; DELIN-NEXT:    da analyze - confused!926; DELIN-NEXT:  Src: store i64 %1, ptr %B.addr.11, align 8 --> Dst: store i64 %1, ptr %B.addr.11, align 8927; DELIN-NEXT:    da analyze - none!928;929entry:930  br label %for.cond1.preheader931 932for.cond1.preheader:                              ; preds = %entry, %for.inc7933  %B.addr.04 = phi ptr [ %B, %entry ], [ %scevgep, %for.inc7 ]934  %i.03 = phi i64 [ 0, %entry ], [ %inc8, %for.inc7 ]935  br label %for.body3936 937for.body3:                                        ; preds = %for.cond1.preheader, %for.body3938  %j.02 = phi i64 [ 0, %for.cond1.preheader ], [ %inc, %for.body3 ]939  %B.addr.11 = phi ptr [ %B.addr.04, %for.cond1.preheader ], [ %incdec.ptr, %for.body3 ]940  %mul = mul nsw i64 %j.02, 500941  %add = add nsw i64 %i.03, %mul942  %arrayidx = getelementptr inbounds i64, ptr %A, i64 %add943  store i64 0, ptr %arrayidx, align 8944  %0 = mul i64 %j.02, -500945  %sub = add i64 %i.03, %0946  %add5 = add nsw i64 %sub, 11947  %arrayidx6 = getelementptr inbounds i64, ptr %A, i64 %add5948  %1 = load i64, ptr %arrayidx6, align 8949  %incdec.ptr = getelementptr inbounds i64, ptr %B.addr.11, i64 1950  store i64 %1, ptr %B.addr.11, align 8951  %inc = add nsw i64 %j.02, 1952  %exitcond = icmp ne i64 %inc, 20953  br i1 %exitcond, label %for.body3, label %for.inc7954 955for.inc7:                                         ; preds = %for.body3956  %scevgep = getelementptr i64, ptr %B.addr.04, i64 20957  %inc8 = add nsw i64 %i.03, 1958  %exitcond5 = icmp ne i64 %inc8, 20959  br i1 %exitcond5, label %for.cond1.preheader, label %for.end9960 961for.end9:                                         ; preds = %for.inc7962  ret void963}964 965 966;;  for (long int i = 0; i < 20; i++)967;;    for (long int j = 0; j < 20; j++) {968;;      A[300*i + j] = 0;969;;      *B++ = A[250*i - j + 11];970 971define void @banerjee11(ptr %A, ptr %B, i64 %m, i64 %n) nounwind uwtable ssp {972; CHECK-LABEL: 'banerjee11'973; CHECK-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 0, ptr %arrayidx, align 8974; CHECK-NEXT:    da analyze - none!975; CHECK-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: %0 = load i64, ptr %arrayidx6, align 8976; CHECK-NEXT:    da analyze - flow [<= <>]!977; CHECK-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8978; CHECK-NEXT:    da analyze - confused!979; CHECK-NEXT:  Src: %0 = load i64, ptr %arrayidx6, align 8 --> Dst: %0 = load i64, ptr %arrayidx6, align 8980; CHECK-NEXT:    da analyze - none!981; CHECK-NEXT:  Src: %0 = load i64, ptr %arrayidx6, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8982; CHECK-NEXT:    da analyze - confused!983; CHECK-NEXT:  Src: store i64 %0, ptr %B.addr.11, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8984; CHECK-NEXT:    da analyze - none!985;986; NORMALIZE-LABEL: 'banerjee11'987; NORMALIZE-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 0, ptr %arrayidx, align 8988; NORMALIZE-NEXT:    da analyze - none!989; NORMALIZE-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: %0 = load i64, ptr %arrayidx6, align 8990; NORMALIZE-NEXT:    da analyze - flow [<= <>]!991; NORMALIZE-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8992; NORMALIZE-NEXT:    da analyze - confused!993; NORMALIZE-NEXT:  Src: %0 = load i64, ptr %arrayidx6, align 8 --> Dst: %0 = load i64, ptr %arrayidx6, align 8994; NORMALIZE-NEXT:    da analyze - none!995; NORMALIZE-NEXT:  Src: %0 = load i64, ptr %arrayidx6, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8996; NORMALIZE-NEXT:    da analyze - confused!997; NORMALIZE-NEXT:  Src: store i64 %0, ptr %B.addr.11, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 8998; NORMALIZE-NEXT:    da analyze - none!999;1000; DELIN-LABEL: 'banerjee11'1001; DELIN-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 0, ptr %arrayidx, align 81002; DELIN-NEXT:    da analyze - none!1003; DELIN-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: %0 = load i64, ptr %arrayidx6, align 81004; DELIN-NEXT:    da analyze - flow [<= <>]!1005; DELIN-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 81006; DELIN-NEXT:    da analyze - confused!1007; DELIN-NEXT:  Src: %0 = load i64, ptr %arrayidx6, align 8 --> Dst: %0 = load i64, ptr %arrayidx6, align 81008; DELIN-NEXT:    da analyze - none!1009; DELIN-NEXT:  Src: %0 = load i64, ptr %arrayidx6, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 81010; DELIN-NEXT:    da analyze - confused!1011; DELIN-NEXT:  Src: store i64 %0, ptr %B.addr.11, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 81012; DELIN-NEXT:    da analyze - none!1013;1014entry:1015  br label %for.cond1.preheader1016 1017for.cond1.preheader:                              ; preds = %entry, %for.inc71018  %B.addr.04 = phi ptr [ %B, %entry ], [ %scevgep, %for.inc7 ]1019  %i.03 = phi i64 [ 0, %entry ], [ %inc8, %for.inc7 ]1020  br label %for.body31021 1022for.body3:                                        ; preds = %for.cond1.preheader, %for.body31023  %j.02 = phi i64 [ 0, %for.cond1.preheader ], [ %inc, %for.body3 ]1024  %B.addr.11 = phi ptr [ %B.addr.04, %for.cond1.preheader ], [ %incdec.ptr, %for.body3 ]1025  %mul = mul nsw i64 %i.03, 3001026  %add = add nsw i64 %mul, %j.021027  %arrayidx = getelementptr inbounds i64, ptr %A, i64 %add1028  store i64 0, ptr %arrayidx, align 81029  %mul4 = mul nsw i64 %i.03, 2501030  %sub = sub nsw i64 %mul4, %j.021031  %add5 = add nsw i64 %sub, 111032  %arrayidx6 = getelementptr inbounds i64, ptr %A, i64 %add51033  %0 = load i64, ptr %arrayidx6, align 81034  %incdec.ptr = getelementptr inbounds i64, ptr %B.addr.11, i64 11035  store i64 %0, ptr %B.addr.11, align 81036  %inc = add nsw i64 %j.02, 11037  %exitcond = icmp ne i64 %inc, 201038  br i1 %exitcond, label %for.body3, label %for.inc71039 1040for.inc7:                                         ; preds = %for.body31041  %scevgep = getelementptr i64, ptr %B.addr.04, i64 201042  %inc8 = add nsw i64 %i.03, 11043  %exitcond5 = icmp ne i64 %inc8, 201044  br i1 %exitcond5, label %for.cond1.preheader, label %for.end91045 1046for.end9:                                         ; preds = %for.inc71047  ret void1048}1049 1050 1051;;  for (long int i = 0; i < 20; i++)1052;;    for (long int j = 0; j < 20; j++) {1053;;      A[100*i + j] = 0;1054;;      *B++ = A[100*i - j + 11];1055 1056define void @banerjee12(ptr %A, ptr %B, i64 %m, i64 %n) nounwind uwtable ssp {1057; CHECK-LABEL: 'banerjee12'1058; CHECK-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 0, ptr %arrayidx, align 81059; CHECK-NEXT:    da analyze - none!1060; CHECK-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: %0 = load i64, ptr %arrayidx6, align 81061; CHECK-NEXT:    da analyze - flow [0 <>]!1062; CHECK-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 81063; CHECK-NEXT:    da analyze - confused!1064; CHECK-NEXT:  Src: %0 = load i64, ptr %arrayidx6, align 8 --> Dst: %0 = load i64, ptr %arrayidx6, align 81065; CHECK-NEXT:    da analyze - none!1066; CHECK-NEXT:  Src: %0 = load i64, ptr %arrayidx6, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 81067; CHECK-NEXT:    da analyze - confused!1068; CHECK-NEXT:  Src: store i64 %0, ptr %B.addr.11, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 81069; CHECK-NEXT:    da analyze - none!1070;1071; NORMALIZE-LABEL: 'banerjee12'1072; NORMALIZE-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 0, ptr %arrayidx, align 81073; NORMALIZE-NEXT:    da analyze - none!1074; NORMALIZE-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: %0 = load i64, ptr %arrayidx6, align 81075; NORMALIZE-NEXT:    da analyze - flow [0 <>]!1076; NORMALIZE-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 81077; NORMALIZE-NEXT:    da analyze - confused!1078; NORMALIZE-NEXT:  Src: %0 = load i64, ptr %arrayidx6, align 8 --> Dst: %0 = load i64, ptr %arrayidx6, align 81079; NORMALIZE-NEXT:    da analyze - none!1080; NORMALIZE-NEXT:  Src: %0 = load i64, ptr %arrayidx6, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 81081; NORMALIZE-NEXT:    da analyze - confused!1082; NORMALIZE-NEXT:  Src: store i64 %0, ptr %B.addr.11, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 81083; NORMALIZE-NEXT:    da analyze - none!1084;1085; DELIN-LABEL: 'banerjee12'1086; DELIN-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 0, ptr %arrayidx, align 81087; DELIN-NEXT:    da analyze - none!1088; DELIN-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: %0 = load i64, ptr %arrayidx6, align 81089; DELIN-NEXT:    da analyze - flow [0 <>]!1090; DELIN-NEXT:  Src: store i64 0, ptr %arrayidx, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 81091; DELIN-NEXT:    da analyze - confused!1092; DELIN-NEXT:  Src: %0 = load i64, ptr %arrayidx6, align 8 --> Dst: %0 = load i64, ptr %arrayidx6, align 81093; DELIN-NEXT:    da analyze - none!1094; DELIN-NEXT:  Src: %0 = load i64, ptr %arrayidx6, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 81095; DELIN-NEXT:    da analyze - confused!1096; DELIN-NEXT:  Src: store i64 %0, ptr %B.addr.11, align 8 --> Dst: store i64 %0, ptr %B.addr.11, align 81097; DELIN-NEXT:    da analyze - none!1098;1099entry:1100  br label %for.cond1.preheader1101 1102for.cond1.preheader:                              ; preds = %entry, %for.inc71103  %B.addr.04 = phi ptr [ %B, %entry ], [ %scevgep, %for.inc7 ]1104  %i.03 = phi i64 [ 0, %entry ], [ %inc8, %for.inc7 ]1105  br label %for.body31106 1107for.body3:                                        ; preds = %for.cond1.preheader, %for.body31108  %j.02 = phi i64 [ 0, %for.cond1.preheader ], [ %inc, %for.body3 ]1109  %B.addr.11 = phi ptr [ %B.addr.04, %for.cond1.preheader ], [ %incdec.ptr, %for.body3 ]1110  %mul = mul nsw i64 %i.03, 1001111  %add = add nsw i64 %mul, %j.021112  %arrayidx = getelementptr inbounds i64, ptr %A, i64 %add1113  store i64 0, ptr %arrayidx, align 81114  %mul4 = mul nsw i64 %i.03, 1001115  %sub = sub nsw i64 %mul4, %j.021116  %add5 = add nsw i64 %sub, 111117  %arrayidx6 = getelementptr inbounds i64, ptr %A, i64 %add51118  %0 = load i64, ptr %arrayidx6, align 81119  %incdec.ptr = getelementptr inbounds i64, ptr %B.addr.11, i64 11120  store i64 %0, ptr %B.addr.11, align 81121  %inc = add nsw i64 %j.02, 11122  %exitcond = icmp ne i64 %inc, 201123  br i1 %exitcond, label %for.body3, label %for.inc71124 1125for.inc7:                                         ; preds = %for.body31126  %scevgep = getelementptr i64, ptr %B.addr.04, i64 201127  %inc8 = add nsw i64 %i.03, 11128  %exitcond5 = icmp ne i64 %inc8, 201129  br i1 %exitcond5, label %for.cond1.preheader, label %for.end91130 1131for.end9:                                         ; preds = %for.inc71132  ret void1133}1134