brintos

brintos / llvm-project-archived public Read only

0
0
Text · 30.6 KiB · b5ece14 Raw
712 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 5; ModuleID = 'ExactRDIV.bc'6target 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"7target triple = "x86_64-apple-macosx10.6.0"8 9 10;;  for (long int i = 0; i < 10; i++)11;;    A[4*i + 10] = i;12;;  for (long int j = 0; j < 10; j++)13;;    *B++ = A[2*j + 1];14 15define void @rdiv0(ptr %A, ptr %B) nounwind uwtable ssp {16; CHECK-LABEL: 'rdiv0'17; CHECK-NEXT:  Src: store i32 %conv, ptr %arrayidx, align 4 --> Dst: store i32 %conv, ptr %arrayidx, align 418; CHECK-NEXT:    da analyze - none!19; CHECK-NEXT:  Src: store i32 %conv, ptr %arrayidx, align 4 --> Dst: %0 = load i32, ptr %arrayidx7, align 420; CHECK-NEXT:    da analyze - none!21; CHECK-NEXT:  Src: store i32 %conv, ptr %arrayidx, align 4 --> Dst: store i32 %0, ptr %B.addr.01, align 422; CHECK-NEXT:    da analyze - confused!23; CHECK-NEXT:  Src: %0 = load i32, ptr %arrayidx7, align 4 --> Dst: %0 = load i32, ptr %arrayidx7, align 424; CHECK-NEXT:    da analyze - none!25; CHECK-NEXT:  Src: %0 = load i32, ptr %arrayidx7, align 4 --> Dst: store i32 %0, ptr %B.addr.01, align 426; CHECK-NEXT:    da analyze - confused!27; CHECK-NEXT:  Src: store i32 %0, ptr %B.addr.01, align 4 --> Dst: store i32 %0, ptr %B.addr.01, align 428; CHECK-NEXT:    da analyze - none!29;30entry:31  br label %for.body32 33for.body:                                         ; preds = %entry, %for.body34  %i.03 = phi i64 [ 0, %entry ], [ %inc, %for.body ]35  %conv = trunc i64 %i.03 to i3236  %mul = shl nsw i64 %i.03, 237  %add = add nsw i64 %mul, 1038  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %add39  store i32 %conv, ptr %arrayidx, align 440  %inc = add nsw i64 %i.03, 141  %exitcond5 = icmp ne i64 %inc, 1042  br i1 %exitcond5, label %for.body, label %for.body4.preheader43 44for.body4.preheader:                              ; preds = %for.body45  br label %for.body446 47for.body4:                                        ; preds = %for.body4.preheader, %for.body448  %j.02 = phi i64 [ %inc9, %for.body4 ], [ 0, %for.body4.preheader ]49  %B.addr.01 = phi ptr [ %incdec.ptr, %for.body4 ], [ %B, %for.body4.preheader ]50  %mul5 = shl nsw i64 %j.02, 151  %add64 = or disjoint i64 %mul5, 152  %arrayidx7 = getelementptr inbounds i32, ptr %A, i64 %add6453  %0 = load i32, ptr %arrayidx7, align 454  %incdec.ptr = getelementptr inbounds i32, ptr %B.addr.01, i64 155  store i32 %0, ptr %B.addr.01, align 456  %inc9 = add nsw i64 %j.02, 157  %exitcond = icmp ne i64 %inc9, 1058  br i1 %exitcond, label %for.body4, label %for.end1059 60for.end10:                                        ; preds = %for.body461  ret void62}63 64 65;;  for (long int i = 0; i < 5; i++)66;;    A[11*i - 45] = i;67;;  for (long int j = 0; j < 10; j++)68;;    *B++ = A[j];69 70define void @rdiv1(ptr %A, ptr %B) nounwind uwtable ssp {71; CHECK-LABEL: 'rdiv1'72; CHECK-NEXT:  Src: store i32 %conv, ptr %arrayidx, align 4 --> Dst: store i32 %conv, ptr %arrayidx, align 473; CHECK-NEXT:    da analyze - none!74; CHECK-NEXT:  Src: store i32 %conv, ptr %arrayidx, align 4 --> Dst: %0 = load i32, ptr %arrayidx5, align 475; CHECK-NEXT:    da analyze - none!76; CHECK-NEXT:  Src: store i32 %conv, ptr %arrayidx, align 4 --> Dst: store i32 %0, ptr %B.addr.01, align 477; CHECK-NEXT:    da analyze - confused!78; CHECK-NEXT:  Src: %0 = load i32, ptr %arrayidx5, align 4 --> Dst: %0 = load i32, ptr %arrayidx5, align 479; CHECK-NEXT:    da analyze - none!80; CHECK-NEXT:  Src: %0 = load i32, ptr %arrayidx5, align 4 --> Dst: store i32 %0, ptr %B.addr.01, align 481; CHECK-NEXT:    da analyze - confused!82; CHECK-NEXT:  Src: store i32 %0, ptr %B.addr.01, align 4 --> Dst: store i32 %0, ptr %B.addr.01, align 483; CHECK-NEXT:    da analyze - none!84;85entry:86  br label %for.body87 88for.body:                                         ; preds = %entry, %for.body89  %i.03 = phi i64 [ 0, %entry ], [ %inc, %for.body ]90  %conv = trunc i64 %i.03 to i3291  %mul = mul nsw i64 %i.03, 1192  %sub = add nsw i64 %mul, -4593  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %sub94  store i32 %conv, ptr %arrayidx, align 495  %inc = add nsw i64 %i.03, 196  %exitcond4 = icmp ne i64 %inc, 597  br i1 %exitcond4, label %for.body, label %for.body4.preheader98 99for.body4.preheader:                              ; preds = %for.body100  br label %for.body4101 102for.body4:                                        ; preds = %for.body4.preheader, %for.body4103  %j.02 = phi i64 [ %inc7, %for.body4 ], [ 0, %for.body4.preheader ]104  %B.addr.01 = phi ptr [ %incdec.ptr, %for.body4 ], [ %B, %for.body4.preheader ]105  %arrayidx5 = getelementptr inbounds i32, ptr %A, i64 %j.02106  %0 = load i32, ptr %arrayidx5, align 4107  %incdec.ptr = getelementptr inbounds i32, ptr %B.addr.01, i64 1108  store i32 %0, ptr %B.addr.01, align 4109  %inc7 = add nsw i64 %j.02, 1110  %exitcond = icmp ne i64 %inc7, 10111  br i1 %exitcond, label %for.body4, label %for.end8112 113for.end8:                                         ; preds = %for.body4114  ret void115}116 117 118;;  for (long int i = 0; i <= 5; i++)119;;    A[11*i - 45] = i;120;;  for (long int j = 0; j < 10; j++)121;;    *B++ = A[j];122 123define void @rdiv2(ptr %A, ptr %B) nounwind uwtable ssp {124; CHECK-LABEL: 'rdiv2'125; CHECK-NEXT:  Src: store i32 %conv, ptr %arrayidx, align 4 --> Dst: store i32 %conv, ptr %arrayidx, align 4126; CHECK-NEXT:    da analyze - none!127; CHECK-NEXT:  Src: store i32 %conv, ptr %arrayidx, align 4 --> Dst: %0 = load i32, ptr %arrayidx5, align 4128; CHECK-NEXT:    da analyze - none!129; CHECK-NEXT:  Src: store i32 %conv, ptr %arrayidx, align 4 --> Dst: store i32 %0, ptr %B.addr.01, align 4130; CHECK-NEXT:    da analyze - confused!131; CHECK-NEXT:  Src: %0 = load i32, ptr %arrayidx5, align 4 --> Dst: %0 = load i32, ptr %arrayidx5, align 4132; CHECK-NEXT:    da analyze - none!133; CHECK-NEXT:  Src: %0 = load i32, ptr %arrayidx5, align 4 --> Dst: store i32 %0, ptr %B.addr.01, align 4134; CHECK-NEXT:    da analyze - confused!135; CHECK-NEXT:  Src: store i32 %0, ptr %B.addr.01, align 4 --> Dst: store i32 %0, ptr %B.addr.01, align 4136; CHECK-NEXT:    da analyze - none!137;138entry:139  br label %for.body140 141for.body:                                         ; preds = %entry, %for.body142  %i.03 = phi i64 [ 0, %entry ], [ %inc, %for.body ]143  %conv = trunc i64 %i.03 to i32144  %mul = mul nsw i64 %i.03, 11145  %sub = add nsw i64 %mul, -45146  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %sub147  store i32 %conv, ptr %arrayidx, align 4148  %inc = add nsw i64 %i.03, 1149  %exitcond4 = icmp ne i64 %inc, 6150  br i1 %exitcond4, label %for.body, label %for.body4.preheader151 152for.body4.preheader:                              ; preds = %for.body153  br label %for.body4154 155for.body4:                                        ; preds = %for.body4.preheader, %for.body4156  %j.02 = phi i64 [ %inc7, %for.body4 ], [ 0, %for.body4.preheader ]157  %B.addr.01 = phi ptr [ %incdec.ptr, %for.body4 ], [ %B, %for.body4.preheader ]158  %arrayidx5 = getelementptr inbounds i32, ptr %A, i64 %j.02159  %0 = load i32, ptr %arrayidx5, align 4160  %incdec.ptr = getelementptr inbounds i32, ptr %B.addr.01, i64 1161  store i32 %0, ptr %B.addr.01, align 4162  %inc7 = add nsw i64 %j.02, 1163  %exitcond = icmp ne i64 %inc7, 10164  br i1 %exitcond, label %for.body4, label %for.end8165 166for.end8:                                         ; preds = %for.body4167  ret void168}169 170 171;;  for (long int i = 0; i < 5; i++)172;;    A[11*i - 45] = i;173;;  for (long int j = 0; j <= 10; j++)174;;    *B++ = A[j];175 176define void @rdiv3(ptr %A, ptr %B) nounwind uwtable ssp {177; CHECK-LABEL: 'rdiv3'178; CHECK-NEXT:  Src: store i32 %conv, ptr %arrayidx, align 4 --> Dst: store i32 %conv, ptr %arrayidx, align 4179; CHECK-NEXT:    da analyze - none!180; CHECK-NEXT:  Src: store i32 %conv, ptr %arrayidx, align 4 --> Dst: %0 = load i32, ptr %arrayidx5, align 4181; CHECK-NEXT:    da analyze - none!182; CHECK-NEXT:  Src: store i32 %conv, ptr %arrayidx, align 4 --> Dst: store i32 %0, ptr %B.addr.01, align 4183; CHECK-NEXT:    da analyze - confused!184; CHECK-NEXT:  Src: %0 = load i32, ptr %arrayidx5, align 4 --> Dst: %0 = load i32, ptr %arrayidx5, align 4185; CHECK-NEXT:    da analyze - none!186; CHECK-NEXT:  Src: %0 = load i32, ptr %arrayidx5, align 4 --> Dst: store i32 %0, ptr %B.addr.01, align 4187; CHECK-NEXT:    da analyze - confused!188; CHECK-NEXT:  Src: store i32 %0, ptr %B.addr.01, align 4 --> Dst: store i32 %0, ptr %B.addr.01, align 4189; CHECK-NEXT:    da analyze - none!190;191entry:192  br label %for.body193 194for.body:                                         ; preds = %entry, %for.body195  %i.03 = phi i64 [ 0, %entry ], [ %inc, %for.body ]196  %conv = trunc i64 %i.03 to i32197  %mul = mul nsw i64 %i.03, 11198  %sub = add nsw i64 %mul, -45199  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %sub200  store i32 %conv, ptr %arrayidx, align 4201  %inc = add nsw i64 %i.03, 1202  %exitcond4 = icmp ne i64 %inc, 5203  br i1 %exitcond4, label %for.body, label %for.body4.preheader204 205for.body4.preheader:                              ; preds = %for.body206  br label %for.body4207 208for.body4:                                        ; preds = %for.body4.preheader, %for.body4209  %j.02 = phi i64 [ %inc7, %for.body4 ], [ 0, %for.body4.preheader ]210  %B.addr.01 = phi ptr [ %incdec.ptr, %for.body4 ], [ %B, %for.body4.preheader ]211  %arrayidx5 = getelementptr inbounds i32, ptr %A, i64 %j.02212  %0 = load i32, ptr %arrayidx5, align 4213  %incdec.ptr = getelementptr inbounds i32, ptr %B.addr.01, i64 1214  store i32 %0, ptr %B.addr.01, align 4215  %inc7 = add nsw i64 %j.02, 1216  %exitcond = icmp ne i64 %inc7, 11217  br i1 %exitcond, label %for.body4, label %for.end8218 219for.end8:                                         ; preds = %for.body4220  ret void221}222 223 224;;  for (long int i = 0; i <= 5; i++)225;;    A[11*i - 45] = i;226;;  for (long int j = 0; j <= 10; j++)227;;    *B++ = A[j];228 229define void @rdiv4(ptr %A, ptr %B) nounwind uwtable ssp {230; CHECK-LABEL: 'rdiv4'231; CHECK-NEXT:  Src: store i32 %conv, ptr %arrayidx, align 4 --> Dst: store i32 %conv, ptr %arrayidx, align 4232; CHECK-NEXT:    da analyze - none!233; CHECK-NEXT:  Src: store i32 %conv, ptr %arrayidx, align 4 --> Dst: %0 = load i32, ptr %arrayidx5, align 4234; CHECK-NEXT:    da analyze - flow [|<]!235; CHECK-NEXT:  Src: store i32 %conv, ptr %arrayidx, align 4 --> Dst: store i32 %0, ptr %B.addr.01, align 4236; CHECK-NEXT:    da analyze - confused!237; CHECK-NEXT:  Src: %0 = load i32, ptr %arrayidx5, align 4 --> Dst: %0 = load i32, ptr %arrayidx5, align 4238; CHECK-NEXT:    da analyze - none!239; CHECK-NEXT:  Src: %0 = load i32, ptr %arrayidx5, align 4 --> Dst: store i32 %0, ptr %B.addr.01, align 4240; CHECK-NEXT:    da analyze - confused!241; CHECK-NEXT:  Src: store i32 %0, ptr %B.addr.01, align 4 --> Dst: store i32 %0, ptr %B.addr.01, align 4242; CHECK-NEXT:    da analyze - none!243;244entry:245  br label %for.body246 247for.body:                                         ; preds = %entry, %for.body248  %i.03 = phi i64 [ 0, %entry ], [ %inc, %for.body ]249  %conv = trunc i64 %i.03 to i32250  %mul = mul nsw i64 %i.03, 11251  %sub = add nsw i64 %mul, -45252  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %sub253  store i32 %conv, ptr %arrayidx, align 4254  %inc = add nsw i64 %i.03, 1255  %exitcond4 = icmp ne i64 %inc, 6256  br i1 %exitcond4, label %for.body, label %for.body4.preheader257 258for.body4.preheader:                              ; preds = %for.body259  br label %for.body4260 261for.body4:                                        ; preds = %for.body4.preheader, %for.body4262  %j.02 = phi i64 [ %inc7, %for.body4 ], [ 0, %for.body4.preheader ]263  %B.addr.01 = phi ptr [ %incdec.ptr, %for.body4 ], [ %B, %for.body4.preheader ]264  %arrayidx5 = getelementptr inbounds i32, ptr %A, i64 %j.02265  %0 = load i32, ptr %arrayidx5, align 4266  %incdec.ptr = getelementptr inbounds i32, ptr %B.addr.01, i64 1267  store i32 %0, ptr %B.addr.01, align 4268  %inc7 = add nsw i64 %j.02, 1269  %exitcond = icmp ne i64 %inc7, 11270  br i1 %exitcond, label %for.body4, label %for.end8271 272for.end8:                                         ; preds = %for.body4273  ret void274}275 276 277;;  for (long int i = 0; i < 5; i++)278;;    A[-11*i + 45] = i;279;;  for (long int j = 0; j < 10; j++)280;;    *B++ = A[-j];281 282define void @rdiv5(ptr %A, ptr %B) nounwind uwtable ssp {283; CHECK-LABEL: 'rdiv5'284; CHECK-NEXT:  Src: store i32 %conv, ptr %arrayidx, align 4 --> Dst: store i32 %conv, ptr %arrayidx, align 4285; CHECK-NEXT:    da analyze - none!286; CHECK-NEXT:  Src: store i32 %conv, ptr %arrayidx, align 4 --> Dst: %0 = load i32, ptr %arrayidx5, align 4287; CHECK-NEXT:    da analyze - none!288; CHECK-NEXT:  Src: store i32 %conv, ptr %arrayidx, align 4 --> Dst: store i32 %0, ptr %B.addr.01, align 4289; CHECK-NEXT:    da analyze - confused!290; CHECK-NEXT:  Src: %0 = load i32, ptr %arrayidx5, align 4 --> Dst: %0 = load i32, ptr %arrayidx5, align 4291; CHECK-NEXT:    da analyze - none!292; CHECK-NEXT:  Src: %0 = load i32, ptr %arrayidx5, align 4 --> Dst: store i32 %0, ptr %B.addr.01, align 4293; CHECK-NEXT:    da analyze - confused!294; CHECK-NEXT:  Src: store i32 %0, ptr %B.addr.01, align 4 --> Dst: store i32 %0, ptr %B.addr.01, align 4295; CHECK-NEXT:    da analyze - none!296;297entry:298  br label %for.body299 300for.body:                                         ; preds = %entry, %for.body301  %i.03 = phi i64 [ 0, %entry ], [ %inc, %for.body ]302  %conv = trunc i64 %i.03 to i32303  %mul = mul nsw i64 %i.03, -11304  %add = add nsw i64 %mul, 45305  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %add306  store i32 %conv, ptr %arrayidx, align 4307  %inc = add nsw i64 %i.03, 1308  %exitcond4 = icmp ne i64 %inc, 5309  br i1 %exitcond4, label %for.body, label %for.body4.preheader310 311for.body4.preheader:                              ; preds = %for.body312  br label %for.body4313 314for.body4:                                        ; preds = %for.body4.preheader, %for.body4315  %j.02 = phi i64 [ %inc7, %for.body4 ], [ 0, %for.body4.preheader ]316  %B.addr.01 = phi ptr [ %incdec.ptr, %for.body4 ], [ %B, %for.body4.preheader ]317  %sub = sub nsw i64 0, %j.02318  %arrayidx5 = getelementptr inbounds i32, ptr %A, i64 %sub319  %0 = load i32, ptr %arrayidx5, align 4320  %incdec.ptr = getelementptr inbounds i32, ptr %B.addr.01, i64 1321  store i32 %0, ptr %B.addr.01, align 4322  %inc7 = add nsw i64 %j.02, 1323  %exitcond = icmp ne i64 %inc7, 10324  br i1 %exitcond, label %for.body4, label %for.end8325 326for.end8:                                         ; preds = %for.body4327  ret void328}329 330 331;;  for (long int i = 0; i <= 5; i++)332;;    A[-11*i + 45] = i;333;;  for (long int j = 0; j < 10; j++)334;;    *B++ = A[-j];335 336define void @rdiv6(ptr %A, ptr %B) nounwind uwtable ssp {337; CHECK-LABEL: 'rdiv6'338; CHECK-NEXT:  Src: store i32 %conv, ptr %arrayidx, align 4 --> Dst: store i32 %conv, ptr %arrayidx, align 4339; CHECK-NEXT:    da analyze - none!340; CHECK-NEXT:  Src: store i32 %conv, ptr %arrayidx, align 4 --> Dst: %0 = load i32, ptr %arrayidx5, align 4341; CHECK-NEXT:    da analyze - none!342; CHECK-NEXT:  Src: store i32 %conv, ptr %arrayidx, align 4 --> Dst: store i32 %0, ptr %B.addr.01, align 4343; CHECK-NEXT:    da analyze - confused!344; CHECK-NEXT:  Src: %0 = load i32, ptr %arrayidx5, align 4 --> Dst: %0 = load i32, ptr %arrayidx5, align 4345; CHECK-NEXT:    da analyze - none!346; CHECK-NEXT:  Src: %0 = load i32, ptr %arrayidx5, align 4 --> Dst: store i32 %0, ptr %B.addr.01, align 4347; CHECK-NEXT:    da analyze - confused!348; CHECK-NEXT:  Src: store i32 %0, ptr %B.addr.01, align 4 --> Dst: store i32 %0, ptr %B.addr.01, align 4349; CHECK-NEXT:    da analyze - none!350;351entry:352  br label %for.body353 354for.body:                                         ; preds = %entry, %for.body355  %i.03 = phi i64 [ 0, %entry ], [ %inc, %for.body ]356  %conv = trunc i64 %i.03 to i32357  %mul = mul nsw i64 %i.03, -11358  %add = add nsw i64 %mul, 45359  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %add360  store i32 %conv, ptr %arrayidx, align 4361  %inc = add nsw i64 %i.03, 1362  %exitcond4 = icmp ne i64 %inc, 6363  br i1 %exitcond4, label %for.body, label %for.body4.preheader364 365for.body4.preheader:                              ; preds = %for.body366  br label %for.body4367 368for.body4:                                        ; preds = %for.body4.preheader, %for.body4369  %j.02 = phi i64 [ %inc7, %for.body4 ], [ 0, %for.body4.preheader ]370  %B.addr.01 = phi ptr [ %incdec.ptr, %for.body4 ], [ %B, %for.body4.preheader ]371  %sub = sub nsw i64 0, %j.02372  %arrayidx5 = getelementptr inbounds i32, ptr %A, i64 %sub373  %0 = load i32, ptr %arrayidx5, align 4374  %incdec.ptr = getelementptr inbounds i32, ptr %B.addr.01, i64 1375  store i32 %0, ptr %B.addr.01, align 4376  %inc7 = add nsw i64 %j.02, 1377  %exitcond = icmp ne i64 %inc7, 10378  br i1 %exitcond, label %for.body4, label %for.end8379 380for.end8:                                         ; preds = %for.body4381  ret void382}383 384 385;;  for (long int i = 0; i < 5; i++)386;;    A[-11*i + 45] = i;387;;  for (long int j = 0; j <= 10; j++)388;;    *B++ = A[-j];389 390define void @rdiv7(ptr %A, ptr %B) nounwind uwtable ssp {391; CHECK-LABEL: 'rdiv7'392; CHECK-NEXT:  Src: store i32 %conv, ptr %arrayidx, align 4 --> Dst: store i32 %conv, ptr %arrayidx, align 4393; CHECK-NEXT:    da analyze - none!394; CHECK-NEXT:  Src: store i32 %conv, ptr %arrayidx, align 4 --> Dst: %0 = load i32, ptr %arrayidx5, align 4395; CHECK-NEXT:    da analyze - none!396; CHECK-NEXT:  Src: store i32 %conv, ptr %arrayidx, align 4 --> Dst: store i32 %0, ptr %B.addr.01, align 4397; CHECK-NEXT:    da analyze - confused!398; CHECK-NEXT:  Src: %0 = load i32, ptr %arrayidx5, align 4 --> Dst: %0 = load i32, ptr %arrayidx5, align 4399; CHECK-NEXT:    da analyze - none!400; CHECK-NEXT:  Src: %0 = load i32, ptr %arrayidx5, align 4 --> Dst: store i32 %0, ptr %B.addr.01, align 4401; CHECK-NEXT:    da analyze - confused!402; CHECK-NEXT:  Src: store i32 %0, ptr %B.addr.01, align 4 --> Dst: store i32 %0, ptr %B.addr.01, align 4403; CHECK-NEXT:    da analyze - none!404;405entry:406  br label %for.body407 408for.body:                                         ; preds = %entry, %for.body409  %i.03 = phi i64 [ 0, %entry ], [ %inc, %for.body ]410  %conv = trunc i64 %i.03 to i32411  %mul = mul nsw i64 %i.03, -11412  %add = add nsw i64 %mul, 45413  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %add414  store i32 %conv, ptr %arrayidx, align 4415  %inc = add nsw i64 %i.03, 1416  %exitcond4 = icmp ne i64 %inc, 5417  br i1 %exitcond4, label %for.body, label %for.body4.preheader418 419for.body4.preheader:                              ; preds = %for.body420  br label %for.body4421 422for.body4:                                        ; preds = %for.body4.preheader, %for.body4423  %j.02 = phi i64 [ %inc7, %for.body4 ], [ 0, %for.body4.preheader ]424  %B.addr.01 = phi ptr [ %incdec.ptr, %for.body4 ], [ %B, %for.body4.preheader ]425  %sub = sub nsw i64 0, %j.02426  %arrayidx5 = getelementptr inbounds i32, ptr %A, i64 %sub427  %0 = load i32, ptr %arrayidx5, align 4428  %incdec.ptr = getelementptr inbounds i32, ptr %B.addr.01, i64 1429  store i32 %0, ptr %B.addr.01, align 4430  %inc7 = add nsw i64 %j.02, 1431  %exitcond = icmp ne i64 %inc7, 11432  br i1 %exitcond, label %for.body4, label %for.end8433 434for.end8:                                         ; preds = %for.body4435  ret void436}437 438 439;;  for (long int i = 0; i <= 5; i++)440;;    A[-11*i + 45] = i;441;;  for (long int j = 0; j <= 10; j++)442;;    *B++ = A[-j];443 444define void @rdiv8(ptr %A, ptr %B) nounwind uwtable ssp {445; CHECK-LABEL: 'rdiv8'446; CHECK-NEXT:  Src: store i32 %conv, ptr %arrayidx, align 4 --> Dst: store i32 %conv, ptr %arrayidx, align 4447; CHECK-NEXT:    da analyze - none!448; CHECK-NEXT:  Src: store i32 %conv, ptr %arrayidx, align 4 --> Dst: %0 = load i32, ptr %arrayidx5, align 4449; CHECK-NEXT:    da analyze - flow [|<]!450; CHECK-NEXT:  Src: store i32 %conv, ptr %arrayidx, align 4 --> Dst: store i32 %0, ptr %B.addr.01, align 4451; CHECK-NEXT:    da analyze - confused!452; CHECK-NEXT:  Src: %0 = load i32, ptr %arrayidx5, align 4 --> Dst: %0 = load i32, ptr %arrayidx5, align 4453; CHECK-NEXT:    da analyze - none!454; CHECK-NEXT:  Src: %0 = load i32, ptr %arrayidx5, align 4 --> Dst: store i32 %0, ptr %B.addr.01, align 4455; CHECK-NEXT:    da analyze - confused!456; CHECK-NEXT:  Src: store i32 %0, ptr %B.addr.01, align 4 --> Dst: store i32 %0, ptr %B.addr.01, align 4457; CHECK-NEXT:    da analyze - none!458;459entry:460  br label %for.body461 462for.body:                                         ; preds = %entry, %for.body463  %i.03 = phi i64 [ 0, %entry ], [ %inc, %for.body ]464  %conv = trunc i64 %i.03 to i32465  %mul = mul nsw i64 %i.03, -11466  %add = add nsw i64 %mul, 45467  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %add468  store i32 %conv, ptr %arrayidx, align 4469  %inc = add nsw i64 %i.03, 1470  %exitcond4 = icmp ne i64 %inc, 6471  br i1 %exitcond4, label %for.body, label %for.body4.preheader472 473for.body4.preheader:                              ; preds = %for.body474  br label %for.body4475 476for.body4:                                        ; preds = %for.body4.preheader, %for.body4477  %j.02 = phi i64 [ %inc7, %for.body4 ], [ 0, %for.body4.preheader ]478  %B.addr.01 = phi ptr [ %incdec.ptr, %for.body4 ], [ %B, %for.body4.preheader ]479  %sub = sub nsw i64 0, %j.02480  %arrayidx5 = getelementptr inbounds i32, ptr %A, i64 %sub481  %0 = load i32, ptr %arrayidx5, align 4482  %incdec.ptr = getelementptr inbounds i32, ptr %B.addr.01, i64 1483  store i32 %0, ptr %B.addr.01, align 4484  %inc7 = add nsw i64 %j.02, 1485  %exitcond = icmp ne i64 %inc7, 11486  br i1 %exitcond, label %for.body4, label %for.end8487 488for.end8:                                         ; preds = %for.body4489  ret void490}491 492 493;;  for (long int i = 0; i < 5; i++)494;;    for (long int j = 0; j < 10; j++) {495;;      A[11*i - j] = i;496;;      *B++ = A[45];497 498define void @rdiv9(ptr %A, ptr %B) nounwind uwtable ssp {499; CHECK-LABEL: 'rdiv9'500; CHECK-NEXT:  Src: store i32 %conv, ptr %arrayidx, align 4 --> Dst: store i32 %conv, ptr %arrayidx, align 4501; CHECK-NEXT:    da analyze - none!502; CHECK-NEXT:  Src: store i32 %conv, ptr %arrayidx, align 4 --> Dst: %0 = load i32, ptr %arrayidx4, align 4503; CHECK-NEXT:    da analyze - none!504; CHECK-NEXT:  Src: store i32 %conv, ptr %arrayidx, align 4 --> Dst: store i32 %0, ptr %B.addr.11, align 4505; CHECK-NEXT:    da analyze - confused!506; CHECK-NEXT:  Src: %0 = load i32, ptr %arrayidx4, align 4 --> Dst: %0 = load i32, ptr %arrayidx4, align 4507; CHECK-NEXT:    da analyze - consistent input [S S]!508; CHECK-NEXT:  Src: %0 = load i32, ptr %arrayidx4, align 4 --> Dst: store i32 %0, ptr %B.addr.11, align 4509; CHECK-NEXT:    da analyze - confused!510; CHECK-NEXT:  Src: store i32 %0, ptr %B.addr.11, align 4 --> Dst: store i32 %0, ptr %B.addr.11, align 4511; CHECK-NEXT:    da analyze - none!512;513entry:514  br label %for.cond1.preheader515 516for.cond1.preheader:                              ; preds = %entry, %for.inc5517  %B.addr.04 = phi ptr [ %B, %entry ], [ %scevgep, %for.inc5 ]518  %i.03 = phi i64 [ 0, %entry ], [ %inc6, %for.inc5 ]519  br label %for.body3520 521for.body3:                                        ; preds = %for.cond1.preheader, %for.body3522  %j.02 = phi i64 [ 0, %for.cond1.preheader ], [ %inc, %for.body3 ]523  %B.addr.11 = phi ptr [ %B.addr.04, %for.cond1.preheader ], [ %incdec.ptr, %for.body3 ]524  %conv = trunc i64 %i.03 to i32525  %mul = mul nsw i64 %i.03, 11526  %sub = sub nsw i64 %mul, %j.02527  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %sub528  store i32 %conv, ptr %arrayidx, align 4529  %arrayidx4 = getelementptr inbounds i32, ptr %A, i64 45530  %0 = load i32, ptr %arrayidx4, align 4531  %incdec.ptr = getelementptr inbounds i32, ptr %B.addr.11, i64 1532  store i32 %0, ptr %B.addr.11, align 4533  %inc = add nsw i64 %j.02, 1534  %exitcond = icmp ne i64 %inc, 10535  br i1 %exitcond, label %for.body3, label %for.inc5536 537for.inc5:                                         ; preds = %for.body3538  %scevgep = getelementptr i32, ptr %B.addr.04, i64 10539  %inc6 = add nsw i64 %i.03, 1540  %exitcond5 = icmp ne i64 %inc6, 5541  br i1 %exitcond5, label %for.cond1.preheader, label %for.end7542 543for.end7:                                         ; preds = %for.inc5544  ret void545}546 547 548 549;;  for (long int i = 0; i <= 5; i++)550;;    for (long int j = 0; j < 10; j++) {551;;      A[11*i - j] = i;552;;      *B++ = A[45];553 554define void @rdiv10(ptr %A, ptr %B) nounwind uwtable ssp {555; CHECK-LABEL: 'rdiv10'556; CHECK-NEXT:  Src: store i32 %conv, ptr %arrayidx, align 4 --> Dst: store i32 %conv, ptr %arrayidx, align 4557; CHECK-NEXT:    da analyze - none!558; CHECK-NEXT:  Src: store i32 %conv, ptr %arrayidx, align 4 --> Dst: %0 = load i32, ptr %arrayidx4, align 4559; CHECK-NEXT:    da analyze - none!560; CHECK-NEXT:  Src: store i32 %conv, ptr %arrayidx, align 4 --> Dst: store i32 %0, ptr %B.addr.11, align 4561; CHECK-NEXT:    da analyze - confused!562; CHECK-NEXT:  Src: %0 = load i32, ptr %arrayidx4, align 4 --> Dst: %0 = load i32, ptr %arrayidx4, align 4563; CHECK-NEXT:    da analyze - consistent input [S S]!564; CHECK-NEXT:  Src: %0 = load i32, ptr %arrayidx4, align 4 --> Dst: store i32 %0, ptr %B.addr.11, align 4565; CHECK-NEXT:    da analyze - confused!566; CHECK-NEXT:  Src: store i32 %0, ptr %B.addr.11, align 4 --> Dst: store i32 %0, ptr %B.addr.11, align 4567; CHECK-NEXT:    da analyze - none!568;569entry:570  br label %for.cond1.preheader571 572for.cond1.preheader:                              ; preds = %entry, %for.inc5573  %B.addr.04 = phi ptr [ %B, %entry ], [ %scevgep, %for.inc5 ]574  %i.03 = phi i64 [ 0, %entry ], [ %inc6, %for.inc5 ]575  br label %for.body3576 577for.body3:                                        ; preds = %for.cond1.preheader, %for.body3578  %j.02 = phi i64 [ 0, %for.cond1.preheader ], [ %inc, %for.body3 ]579  %B.addr.11 = phi ptr [ %B.addr.04, %for.cond1.preheader ], [ %incdec.ptr, %for.body3 ]580  %conv = trunc i64 %i.03 to i32581  %mul = mul nsw i64 %i.03, 11582  %sub = sub nsw i64 %mul, %j.02583  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %sub584  store i32 %conv, ptr %arrayidx, align 4585  %arrayidx4 = getelementptr inbounds i32, ptr %A, i64 45586  %0 = load i32, ptr %arrayidx4, align 4587  %incdec.ptr = getelementptr inbounds i32, ptr %B.addr.11, i64 1588  store i32 %0, ptr %B.addr.11, align 4589  %inc = add nsw i64 %j.02, 1590  %exitcond = icmp ne i64 %inc, 10591  br i1 %exitcond, label %for.body3, label %for.inc5592 593for.inc5:                                         ; preds = %for.body3594  %scevgep = getelementptr i32, ptr %B.addr.04, i64 10595  %inc6 = add nsw i64 %i.03, 1596  %exitcond5 = icmp ne i64 %inc6, 6597  br i1 %exitcond5, label %for.cond1.preheader, label %for.end7598 599for.end7:                                         ; preds = %for.inc5600  ret void601}602 603 604;;  for (long int i = 0; i < 5; i++)605;;    for (long int j = 0; j <= 10; j++) {606;;      A[11*i - j] = i;607;;      *B++ = A[45];608 609define void @rdiv11(ptr %A, ptr %B) nounwind uwtable ssp {610; CHECK-LABEL: 'rdiv11'611; CHECK-NEXT:  Src: store i32 %conv, ptr %arrayidx, align 4 --> Dst: store i32 %conv, ptr %arrayidx, align 4612; CHECK-NEXT:    da analyze - none!613; CHECK-NEXT:  Src: store i32 %conv, ptr %arrayidx, align 4 --> Dst: %0 = load i32, ptr %arrayidx4, align 4614; CHECK-NEXT:    da analyze - none!615; CHECK-NEXT:  Src: store i32 %conv, ptr %arrayidx, align 4 --> Dst: store i32 %0, ptr %B.addr.11, align 4616; CHECK-NEXT:    da analyze - confused!617; CHECK-NEXT:  Src: %0 = load i32, ptr %arrayidx4, align 4 --> Dst: %0 = load i32, ptr %arrayidx4, align 4618; CHECK-NEXT:    da analyze - consistent input [S S]!619; CHECK-NEXT:  Src: %0 = load i32, ptr %arrayidx4, align 4 --> Dst: store i32 %0, ptr %B.addr.11, align 4620; CHECK-NEXT:    da analyze - confused!621; CHECK-NEXT:  Src: store i32 %0, ptr %B.addr.11, align 4 --> Dst: store i32 %0, ptr %B.addr.11, align 4622; CHECK-NEXT:    da analyze - none!623;624entry:625  br label %for.cond1.preheader626 627for.cond1.preheader:                              ; preds = %entry, %for.inc5628  %B.addr.04 = phi ptr [ %B, %entry ], [ %scevgep, %for.inc5 ]629  %i.03 = phi i64 [ 0, %entry ], [ %inc6, %for.inc5 ]630  br label %for.body3631 632for.body3:                                        ; preds = %for.cond1.preheader, %for.body3633  %j.02 = phi i64 [ 0, %for.cond1.preheader ], [ %inc, %for.body3 ]634  %B.addr.11 = phi ptr [ %B.addr.04, %for.cond1.preheader ], [ %incdec.ptr, %for.body3 ]635  %conv = trunc i64 %i.03 to i32636  %mul = mul nsw i64 %i.03, 11637  %sub = sub nsw i64 %mul, %j.02638  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %sub639  store i32 %conv, ptr %arrayidx, align 4640  %arrayidx4 = getelementptr inbounds i32, ptr %A, i64 45641  %0 = load i32, ptr %arrayidx4, align 4642  %incdec.ptr = getelementptr inbounds i32, ptr %B.addr.11, i64 1643  store i32 %0, ptr %B.addr.11, align 4644  %inc = add nsw i64 %j.02, 1645  %exitcond = icmp ne i64 %inc, 11646  br i1 %exitcond, label %for.body3, label %for.inc5647 648for.inc5:                                         ; preds = %for.body3649  %scevgep = getelementptr i32, ptr %B.addr.04, i64 11650  %inc6 = add nsw i64 %i.03, 1651  %exitcond5 = icmp ne i64 %inc6, 5652  br i1 %exitcond5, label %for.cond1.preheader, label %for.end7653 654for.end7:                                         ; preds = %for.inc5655  ret void656}657 658 659;;  for (long int i = 0; i <= 5; i++)660;;    for (long int j = 0; j <= 10; j++) {661;;      A[11*i - j] = i;662;;      *B++ = A[45];663 664define void @rdiv12(ptr %A, ptr %B) nounwind uwtable ssp {665; CHECK-LABEL: 'rdiv12'666; CHECK-NEXT:  Src: store i32 %conv, ptr %arrayidx, align 4 --> Dst: store i32 %conv, ptr %arrayidx, align 4667; CHECK-NEXT:    da analyze - none!668; CHECK-NEXT:  Src: store i32 %conv, ptr %arrayidx, align 4 --> Dst: %0 = load i32, ptr %arrayidx4, align 4669; CHECK-NEXT:    da analyze - flow [* *|<]!670; CHECK-NEXT:  Src: store i32 %conv, ptr %arrayidx, align 4 --> Dst: store i32 %0, ptr %B.addr.11, align 4671; CHECK-NEXT:    da analyze - confused!672; CHECK-NEXT:  Src: %0 = load i32, ptr %arrayidx4, align 4 --> Dst: %0 = load i32, ptr %arrayidx4, align 4673; CHECK-NEXT:    da analyze - consistent input [S S]!674; CHECK-NEXT:  Src: %0 = load i32, ptr %arrayidx4, align 4 --> Dst: store i32 %0, ptr %B.addr.11, align 4675; CHECK-NEXT:    da analyze - confused!676; CHECK-NEXT:  Src: store i32 %0, ptr %B.addr.11, align 4 --> Dst: store i32 %0, ptr %B.addr.11, align 4677; CHECK-NEXT:    da analyze - none!678;679entry:680  br label %for.cond1.preheader681 682for.cond1.preheader:                              ; preds = %entry, %for.inc5683  %B.addr.04 = phi ptr [ %B, %entry ], [ %scevgep, %for.inc5 ]684  %i.03 = phi i64 [ 0, %entry ], [ %inc6, %for.inc5 ]685  br label %for.body3686 687for.body3:                                        ; preds = %for.cond1.preheader, %for.body3688  %j.02 = phi i64 [ 0, %for.cond1.preheader ], [ %inc, %for.body3 ]689  %B.addr.11 = phi ptr [ %B.addr.04, %for.cond1.preheader ], [ %incdec.ptr, %for.body3 ]690  %conv = trunc i64 %i.03 to i32691  %mul = mul nsw i64 %i.03, 11692  %sub = sub nsw i64 %mul, %j.02693  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %sub694  store i32 %conv, ptr %arrayidx, align 4695  %arrayidx4 = getelementptr inbounds i32, ptr %A, i64 45696  %0 = load i32, ptr %arrayidx4, align 4697  %incdec.ptr = getelementptr inbounds i32, ptr %B.addr.11, i64 1698  store i32 %0, ptr %B.addr.11, align 4699  %inc = add nsw i64 %j.02, 1700  %exitcond = icmp ne i64 %inc, 11701  br i1 %exitcond, label %for.body3, label %for.inc5702 703for.inc5:                                         ; preds = %for.body3704  %scevgep = getelementptr i32, ptr %B.addr.04, i64 11705  %inc6 = add nsw i64 %i.03, 1706  %exitcond5 = icmp ne i64 %inc6, 6707  br i1 %exitcond5, label %for.cond1.preheader, label %for.end7708 709for.end7:                                         ; preds = %for.inc5710  ret void711}712