brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.6 KiB · c7a2a89 Raw
81 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --version 52; RUN: opt < %s -passes='print<delinearization>' -disable-output 2>&1 | FileCheck %s3; We do not recognize anymore variable size arrays.4 5; extern void bar(long n, long m, double A[n][m]);6;7; void foo(long a, long b) {8;   for (long n = 1; n < a; ++n)9;   for (long m = 1; m < b; ++m) {10;     double A[n][m];11;     for (long i = 0; i < n; i++)12;       for (long j = 0; j < m; j++)13;         A[i][j] = 1.0;14;     bar(n, m, A);15;   }16; }17 18define void @foo(i64 %a, i64 %b) nounwind uwtable {19; CHECK-LABEL: 'foo'20; CHECK-NEXT:  Inst: store double 1.000000e+00, ptr %arrayidx10.us.us, align 821; CHECK-NEXT:  AccessFunction: {{\{\{}}0,+,{8,+,8}<%for.cond7.preheader.lr.ph.split.us.us>}<%for.body9.lr.ph.us.us>,+,8}<%for.body9.us.us>22; CHECK-NEXT:  failed to delinearize23;24entry:25  %cmp43 = icmp sgt i64 %a, 126  br i1 %cmp43, label %for.cond1.preheader.lr.ph, label %for.end1927 28for.cond1.preheader.lr.ph:                        ; preds = %entry29  %cmp224 = icmp sgt i64 %b, 130  br label %for.cond1.preheader31 32for.cond1.preheader:                              ; preds = %for.inc17, %for.cond1.preheader.lr.ph33  %indvars.iv51 = phi i64 [ 1, %for.cond1.preheader.lr.ph ], [ %indvars.iv.next52, %for.inc17 ]34  br i1 %cmp224, label %for.cond7.preheader.lr.ph.split.us.us, label %for.inc1735 36for.end13.us:                                     ; preds = %for.inc11.us.us37  call void @bar(i64 %indvars.iv51, i64 %indvars.iv48, ptr %vla.us) nounwind38  call void @llvm.stackrestore(ptr %1)39  %indvars.iv.next49 = add i64 %indvars.iv48, 140  %exitcond54 = icmp eq i64 %indvars.iv.next49, %b41  br i1 %exitcond54, label %for.inc17, label %for.cond7.preheader.lr.ph.split.us.us42 43for.inc11.us.us:                                  ; preds = %for.body9.us.us44  %inc12.us.us = add nsw i64 %i.023.us.us, 145  %exitcond53 = icmp eq i64 %inc12.us.us, %indvars.iv5146  br i1 %exitcond53, label %for.end13.us, label %for.body9.lr.ph.us.us47 48for.body9.lr.ph.us.us:                            ; preds = %for.cond7.preheader.lr.ph.split.us.us, %for.inc11.us.us49  %i.023.us.us = phi i64 [ 0, %for.cond7.preheader.lr.ph.split.us.us ], [ %inc12.us.us, %for.inc11.us.us ]50  %0 = mul nsw i64 %i.023.us.us, %indvars.iv4851  br label %for.body9.us.us52 53for.body9.us.us:                                  ; preds = %for.body9.us.us, %for.body9.lr.ph.us.us54  %j.021.us.us = phi i64 [ 0, %for.body9.lr.ph.us.us ], [ %inc.us.us, %for.body9.us.us ]55  %arrayidx.sum.us.us = add i64 %j.021.us.us, %056  %arrayidx10.us.us = getelementptr inbounds double, ptr %vla.us, i64 %arrayidx.sum.us.us57  store double 1.000000e+00, ptr %arrayidx10.us.us, align 858  %inc.us.us = add nsw i64 %j.021.us.us, 159  %exitcond50 = icmp eq i64 %inc.us.us, %indvars.iv4860  br i1 %exitcond50, label %for.inc11.us.us, label %for.body9.us.us61 62for.cond7.preheader.lr.ph.split.us.us:            ; preds = %for.cond1.preheader, %for.end13.us63  %indvars.iv48 = phi i64 [ %indvars.iv.next49, %for.end13.us ], [ 1, %for.cond1.preheader ]64  %1 = call ptr @llvm.stacksave()65  %2 = mul nuw i64 %indvars.iv48, %indvars.iv5166  %vla.us = alloca double, i64 %2, align 1667  br label %for.body9.lr.ph.us.us68 69for.inc17:                                        ; preds = %for.end13.us, %for.cond1.preheader70  %indvars.iv.next52 = add i64 %indvars.iv51, 171  %exitcond55 = icmp eq i64 %indvars.iv.next52, %a72  br i1 %exitcond55, label %for.end19, label %for.cond1.preheader73 74for.end19:                                        ; preds = %for.inc17, %entry75  ret void76}77 78declare ptr @llvm.stacksave() nounwind79declare void @bar(i64, i64, ptr)80declare void @llvm.stackrestore(ptr) nounwind81