mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-05 13:26:55 +00:00
split delinearization pass in 3 steps
To compute the dimensions of the array in a unique way, we split the delinearization analysis in three steps: - find parametric terms in all memory access functions - compute the array dimensions from the set of terms - compute the delinearized access functions for each dimension The first step is executed on all the memory access functions such that we gather all the patterns in which an array is accessed. The second step reduces all this information in a unique description of the sizes of the array. The third step is delinearizing each memory access function following the common description of the shape of the array computed in step 2. This rewrite of the delinearization pass also solves a problem we had with the previous implementation: because the previous algorithm was by induction on the structure of the SCEV, it would not correctly recognize the shape of the array when the memory access was not following the nesting of the loops: for example, see polly/test/ScopInfo/multidim_only_ivs_3d_reverse.ll ; void foo(long n, long m, long o, double A[n][m][o]) { ; ; for (long i = 0; i < n; i++) ; for (long j = 0; j < m; j++) ; for (long k = 0; k < o; k++) ; A[i][k][j] = 1.0; Starting with this patch we no longer delinearize access functions that do not contain parameters, for example in test/Analysis/DependenceAnalysis/GCD.ll ;; for (long int i = 0; i < 100; i++) ;; for (long int j = 0; j < 100; j++) { ;; A[2*i - 4*j] = i; ;; *B++ = A[6*i + 8*j]; these accesses will not be delinearized as the upper bound of the loops are constants, and their access functions do not contain SCEVUnknown parameters. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208232 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -12,17 +12,6 @@
|
||||
; CHECK: ArrayDecl[UnknownSize][%m][%o] with elements of sizeof(i32) bytes.
|
||||
; CHECK: ArrayRef[{3,+,2}<%for.i>][{-4,+,3}<%for.j>][{7,+,5}<%for.k>]
|
||||
|
||||
; AddRec: {{(8 + ((4 + (12 * %m)) * %o) + %A),+,(8 * %m * %o)}<%for.i>,+,(12 * %o)}<%for.j>
|
||||
; CHECK: Base offset: %A
|
||||
; CHECK: ArrayDecl[UnknownSize][%o] with elements of sizeof(i32) bytes.
|
||||
; CHECK: ArrayRef[{(1 + (3 * %m)),+,(2 * %m)}<%for.i>][{2,+,(3 * %o)}<%for.j>]
|
||||
|
||||
; AddRec: {(8 + ((-8 + (24 * %m)) * %o) + %A),+,(8 * %m * %o)}<%for.i>
|
||||
; CHECK: Base offset: %A
|
||||
; CHECK: ArrayDecl[UnknownSize] with elements of 2 bytes.
|
||||
; CHECK: ArrayRef[{((1 + ((-1 + (3 * %m)) * %o)) * sizeof(i32)),+,(%m * %o * sizeof(i32))}<%for.i>]
|
||||
|
||||
; Function Attrs: nounwind uwtable
|
||||
define void @foo(i64 %n, i64 %m, i64 %o, i32* nocapture %A) #0 {
|
||||
entry:
|
||||
%cmp32 = icmp sgt i64 %n, 0
|
||||
|
@@ -31,16 +31,6 @@
|
||||
; CHECK: ArrayDecl[UnknownSize][(sext i32 %a.cols to i64)][(sext i32 %a.deps to i64)] with elements of sizeof(float) bytes.
|
||||
; CHECK: ArrayRef[{1,+,1}<nuw><nsw><%for.i>][{1,+,1}<nuw><nsw><%for.j>][{1,+,1}<nuw><nsw><%for.k>]
|
||||
|
||||
; AddRec: {{(-4 + (4 * (sext i32 (-1 + %p.deps) to i64)) + (4 * (sext i32 %a.deps to i64) * (1 + (sext i32 %a.cols to i64))) + %a.base),+,(4 * (sext i32 %a.deps to i64) * (sext i32 %a.cols to i64))}<%for.i>,+,(4 * (sext i32 %a.deps to i64))}<%for.j>
|
||||
; CHECK: Base offset: %a.base
|
||||
; CHECK: ArrayDecl[UnknownSize][(sext i32 %a.deps to i64)] with elements of sizeof(float) bytes.
|
||||
; CHECK: ArrayRef[{(1 + (sext i32 %a.cols to i64)),+,(sext i32 %a.cols to i64)}<%for.i>][{(-1 + (sext i32 (-1 + %p.deps) to i64)),+,(sext i32 %a.deps to i64)}<%for.j>]
|
||||
|
||||
; AddRec: {(-4 + (4 * (sext i32 (-1 + %p.deps) to i64)) + ((sext i32 %a.deps to i64) * (-4 + (4 * (sext i32 (-1 + %p.cols) to i64)) + (4 * (sext i32 %a.cols to i64)))) + %a.base),+,(4 * (sext i32 %a.deps to i64) * (sext i32 %a.cols to i64))}<%for.i>
|
||||
; CHECK: Base offset: %a.base
|
||||
; CHECK: ArrayDecl[UnknownSize] with elements of sizeof(float) bytes.
|
||||
; CHECK: ArrayRef[{(-1 + (sext i32 (-1 + %p.deps) to i64) + ((sext i32 %a.deps to i64) * (-1 + (sext i32 (-1 + %p.cols) to i64) + (sext i32 %a.cols to i64)))),+,((sext i32 %a.deps to i64) * (sext i32 %a.cols to i64))}<%for.i>]
|
||||
|
||||
%struct.Mat = type { float*, i32, i32, i32, i32 }
|
||||
|
||||
define void @jacobi(i32 %nn, %struct.Mat* nocapture %a, %struct.Mat* nocapture %p) nounwind uwtable {
|
||||
|
@@ -31,16 +31,6 @@
|
||||
; CHECK: ArrayDecl[UnknownSize][(sext i32 %a.cols to i64)][(sext i32 %a.deps to i64)] with elements of sizeof(float) bytes.
|
||||
; CHECK: ArrayRef[{1,+,1}<nuw><nsw><%for.i>][{1,+,1}<nuw><nsw><%for.j>][{1,+,1}<nuw><nsw><%for.k>]
|
||||
|
||||
; AddRec: {{(-4 + (4 * (sext i32 (-1 + %p.deps) to i64)) + (4 * (sext i32 %a.deps to i64) * (1 + (sext i32 %a.cols to i64))) + %a.base),+,(4 * (sext i32 %a.deps to i64) * (sext i32 %a.cols to i64))}<%for.i>,+,(4 * (sext i32 %a.deps to i64))}<%for.j>
|
||||
; CHECK: Base offset: %a.base
|
||||
; CHECK: ArrayDecl[UnknownSize][(sext i32 %a.deps to i64)] with elements of sizeof(float) bytes.
|
||||
; CHECK: ArrayRef[{(1 + (sext i32 %a.cols to i64)),+,(sext i32 %a.cols to i64)}<%for.i>][{(-1 + (sext i32 (-1 + %p.deps) to i64)),+,(sext i32 %a.deps to i64)}<%for.j>]
|
||||
|
||||
; AddRec: {(-4 + (4 * (sext i32 (-1 + %p.deps) to i64)) + ((sext i32 %a.deps to i64) * (-4 + (4 * (sext i32 (-1 + %p.cols) to i64)) + (4 * (sext i32 %a.cols to i64)))) + %a.base),+,(4 * (sext i32 %a.deps to i64) * (sext i32 %a.cols to i64))}<%for.i>
|
||||
; CHECK: Base offset: %a.base
|
||||
; CHECK: ArrayDecl[UnknownSize] with elements of sizeof(float) bytes.
|
||||
; CHECK: ArrayRef[{(-1 + (sext i32 (-1 + %p.deps) to i64) + ((sext i32 %a.deps to i64) * (-1 + (sext i32 (-1 + %p.cols) to i64) + (sext i32 %a.cols to i64)))),+,((sext i32 %a.deps to i64) * (sext i32 %a.cols to i64))}<%for.i>]
|
||||
|
||||
%struct.Mat = type { float*, i32, i32, i32, i32 }
|
||||
|
||||
define void @jacobi(i32 %nn, %struct.Mat* nocapture %a, %struct.Mat* nocapture %p) nounwind uwtable {
|
||||
|
@@ -13,16 +13,6 @@
|
||||
; CHECK: ArrayDecl[UnknownSize][%m][%o] with elements of sizeof(double) bytes.
|
||||
; CHECK: ArrayRef[{3,+,1}<nw><%for.i>][{-4,+,1}<nw><%for.j>][{7,+,1}<nw><%for.k>]
|
||||
|
||||
; AddRec: {{(48 + ((-24 + (24 * %m)) * %o) + %A),+,(8 * %m * %o)}<%for.i>,+,(8 * %o)}<%for.j>
|
||||
; CHECK: Base offset: %A
|
||||
; CHECK: ArrayDecl[UnknownSize][%o] with elements of sizeof(double) bytes.
|
||||
; CHECK: ArrayRef[{(-3 + (3 * %m)),+,%m}<%for.i>][{6,+,%o}<%for.j>]
|
||||
|
||||
; AddRec: {(48 + ((-32 + (32 * %m)) * %o) + %A),+,(8 * %m * %o)}<%for.i>
|
||||
; CHECK: Base offset: %A
|
||||
; CHECK: ArrayDecl[UnknownSize] with elements of sizeof(double) bytes.
|
||||
; CHECK: ArrayRef[{(6 + ((-4 + (4 * %m)) * %o)),+,(%m * %o)}<%for.i>]
|
||||
|
||||
define void @foo(i64 %n, i64 %m, i64 %o, double* %A) {
|
||||
entry:
|
||||
br label %for.i
|
||||
|
@@ -13,16 +13,6 @@
|
||||
; CHECK: ArrayDecl[UnknownSize][%m][(%o + %p)] with elements of sizeof(double) bytes.
|
||||
; CHECK: ArrayRef[{3,+,1}<nw><%for.cond4.preheader.lr.ph.us>][{-4,+,1}<nw><%for.body6.lr.ph.us.us>][{7,+,1}<nw><%for.body6.us.us>]
|
||||
|
||||
; AddRec: {{(48 + (8 * %o) + (8 * (-4 + (3 * %m)) * (%o + %p)) + %A),+,(8 * (%o + %p) * %m)}<%for.cond4.preheader.lr.ph.us>,+,(8 * (%o + %p))}<%for.body6.lr.ph.us.us>
|
||||
; CHECK: Base offset: %A
|
||||
; CHECK: ArrayDecl[UnknownSize][(%o + %p)] with elements of sizeof(double) bytes.
|
||||
; CHECK: ArrayRef[{(-4 + (3 * %m)),+,%m}<%for.cond4.preheader.lr.ph.us>][{(6 + %o),+,(%o + %p)}<%for.body6.lr.ph.us.us>]
|
||||
|
||||
; AddRec: {(48 + (8 * %o) + ((-40 + (32 * %m)) * (%o + %p)) + %A),+,(8 * (%o + %p) * %m)}<%for.cond4.preheader.lr.ph.us>
|
||||
; CHECK: Base offset: %A
|
||||
; CHECK: ArrayDecl[UnknownSize] with elements of sizeof(double) bytes.
|
||||
; CHECK: ArrayRef[{(6 + ((-5 + (4 * %m)) * (%o + %p)) + %o),+,((%o + %p) * %m)}<%for.cond4.preheader.lr.ph.us>]
|
||||
|
||||
define void @foo(i64 %n, i64 %m, i64 %o, i64 %p, double* nocapture %A) nounwind uwtable {
|
||||
entry:
|
||||
%add = add nsw i64 %p, %o
|
||||
|
@@ -13,16 +13,6 @@
|
||||
; CHECK: ArrayDecl[UnknownSize][%m][%o] with elements of sizeof(double) bytes.
|
||||
; CHECK: ArrayRef[{%p,+,1}<nw><%for.i>][{%q,+,1}<nw><%for.j>][{%r,+,1}<nw><%for.k>]
|
||||
|
||||
; AddRec: {{(-8 + (8 * ((((%m * %p) + %q) * %o) + %r)) + (8 * %o) + %A),+,(8 * %m * %o)}<%for.i>,+,(8 * %o)}<%for.j>
|
||||
; CHECK: Base offset: %A
|
||||
; CHECK: ArrayDecl[UnknownSize][%o] with elements of sizeof(double) bytes.
|
||||
; CHECK: ArrayRef[{(1 + (%m * %p) + %q),+,%m}<%for.i>][{(-1 + %r),+,%o}<%for.j>]
|
||||
|
||||
; AddRec: {(-8 + (8 * ((((%m * %p) + %q) * %o) + %r)) + (8 * %m * %o) + %A),+,(8 * %m * %o)}<%for.i>
|
||||
; CHECK: Base offset: %A
|
||||
; CHECK: ArrayDecl[UnknownSize] with elements of sizeof(double) bytes.
|
||||
; CHECK: ArrayRef[{(-1 + ((((1 + %p) * %m) + %q) * %o) + %r),+,(%m * %o)}<%for.i>]
|
||||
|
||||
define void @foo(i64 %n, i64 %m, i64 %o, double* %A, i64 %p, i64 %q, i64 %r) {
|
||||
entry:
|
||||
br label %for.i
|
||||
|
@@ -13,11 +13,6 @@
|
||||
; CHECK: ArrayDecl[UnknownSize][%m] with elements of sizeof(double) bytes.
|
||||
; CHECK: ArrayRef[{0,+,1}<nuw><nsw><%for.i>][{0,+,1}<nuw><nsw><%for.j>]
|
||||
|
||||
; AddRec: {(-8 + (8 * %m) + %A),+,(8 * %m)}<%for.i>
|
||||
; CHECK: Base offset: %A
|
||||
; CHECK: ArrayDecl[UnknownSize] with elements of sizeof(double) bytes.
|
||||
; CHECK: ArrayRef[{(-1 + %m),+,%m}<%for.i>]
|
||||
|
||||
define void @foo(i64 %n, i64 %m, double* %A) {
|
||||
entry:
|
||||
br label %for.i
|
||||
|
@@ -1,4 +1,6 @@
|
||||
; RUN: opt < %s -analyze -delinearize | FileCheck %s
|
||||
; XFAIL: *
|
||||
; We do not recognize anymore variable size arrays.
|
||||
|
||||
; extern void bar(long n, long m, double A[n][m]);
|
||||
;
|
||||
|
@@ -13,16 +13,6 @@
|
||||
; CHECK: ArrayDecl[UnknownSize][%m][%o] with elements of sizeof(double) bytes.
|
||||
; CHECK: ArrayRef[{0,+,1}<nuw><nsw><%for.i>][{0,+,1}<nuw><nsw><%for.j>][{0,+,1}<nuw><nsw><%for.k>]
|
||||
|
||||
; AddRec: {{(-8 + (8 * %o) + %A),+,(8 * %m * %o)}<%for.i>,+,(8 * %o)}<%for.j>
|
||||
; CHECK: Base offset: %A
|
||||
; CHECK: ArrayDecl[UnknownSize][(%m * %o)] with elements of sizeof(double) bytes.
|
||||
; CHECK: ArrayRef[{0,+,1}<nuw><nsw><%for.i>][{(-1 + %o),+,%o}<%for.j>]
|
||||
|
||||
; AddRec: {(-8 + (8 * %m * %o) + %A),+,(8 * %m * %o)}<%for.i>
|
||||
; CHECK: Base offset: %A
|
||||
; CHECK: ArrayDecl[UnknownSize] with elements of sizeof(double) bytes.
|
||||
; CHECK: ArrayRef[{(-1 + (%m * %o)),+,(%m * %o)}<%for.i>]
|
||||
|
||||
define void @foo(i64 %n, i64 %m, i64 %o, double* %A) {
|
||||
entry:
|
||||
br label %for.i
|
||||
|
@@ -12,16 +12,6 @@
|
||||
; CHECK: ArrayDecl[UnknownSize][(zext i32 %m to i64)][(zext i32 %o to i64)] with elements of 8 bytes.
|
||||
; CHECK: ArrayRef[{0,+,1}<%for.i>][{0,+,1}<%for.j>][{0,+,1}<%for.k>]
|
||||
|
||||
; AddRec: {{((8 * (zext i32 (-1 + %o) to i64)) + %A),+,(8 * (zext i32 %m to i64) * (zext i32 %o to i64))}<%for.i>,+,(8 * (zext i32 %o to i64))}<%for.j>
|
||||
; CHECK: Base offset: %A
|
||||
; CHECK: ArrayDecl[UnknownSize][((zext i32 %m to i64) * (zext i32 %o to i64))] with elements of 8 bytes.
|
||||
; CHECK: ArrayRef[{0,+,1}<%for.i>][{(zext i32 (-1 + %o) to i64),+,(zext i32 %o to i64)}<%for.j>]
|
||||
|
||||
; AddRec: {((8 * (zext i32 (-1 + %o) to i64)) + (8 * (zext i32 (-1 + %m) to i64) * (zext i32 %o to i64)) + %A),+,(8 * (zext i32 %m to i64) * (zext i32 %o to i64))}<%for.i>
|
||||
; CHECK: Base offset: %A
|
||||
; CHECK: ArrayDecl[UnknownSize] with elements of 8 bytes.
|
||||
; CHECK: ArrayRef[{((zext i32 (-1 + %o) to i64) + ((zext i32 (-1 + %m) to i64) * (zext i32 %o to i64))),+,((zext i32 %m to i64) * (zext i32 %o to i64))}<%for.i>]
|
||||
|
||||
target 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"
|
||||
target triple = "x86_64-unknown-linux-gnu"
|
||||
|
||||
|
@@ -24,7 +24,7 @@ entry:
|
||||
|
||||
; DELIN: 'Dependence Analysis' for function 'banerjee0':
|
||||
; DELIN: da analyze - none!
|
||||
; DELIN: da analyze - consistent flow [0 1]!
|
||||
; DELIN: da analyze - flow [<= <>]!
|
||||
; DELIN: da analyze - confused!
|
||||
; DELIN: da analyze - none!
|
||||
; DELIN: da analyze - confused!
|
||||
@@ -83,10 +83,10 @@ entry:
|
||||
; CHECK: da analyze - output [* *]!
|
||||
|
||||
; DELIN: 'Dependence Analysis' for function 'banerjee1':
|
||||
; DELIN: da analyze - none
|
||||
; DELIN: da analyze - consistent flow [0 1]!
|
||||
; DELIN: da analyze - output [* *]!
|
||||
; DELIN: da analyze - flow [* <>]!
|
||||
; DELIN: da analyze - confused!
|
||||
; DELIN: da analyze - none
|
||||
; DELIN: da analyze - input [* *]!
|
||||
; DELIN: da analyze - confused!
|
||||
; DELIN: da analyze - output [* *]!
|
||||
|
||||
@@ -218,7 +218,7 @@ entry:
|
||||
|
||||
; DELIN: 'Dependence Analysis' for function 'banerjee3':
|
||||
; DELIN: da analyze - none!
|
||||
; DELIN: da analyze - consistent flow [-9 -9]!
|
||||
; DELIN: da analyze - flow [> >]!
|
||||
; DELIN: da analyze - confused!
|
||||
; DELIN: da analyze - none!
|
||||
; DELIN: da analyze - confused!
|
||||
@@ -336,7 +336,7 @@ entry:
|
||||
|
||||
; DELIN: 'Dependence Analysis' for function 'banerjee5':
|
||||
; DELIN: da analyze - none!
|
||||
; DELIN: da analyze - consistent flow [9 9]!
|
||||
; DELIN: da analyze - flow [< <]!
|
||||
; DELIN: da analyze - confused!
|
||||
; DELIN: da analyze - none!
|
||||
; DELIN: da analyze - confused!
|
||||
@@ -395,7 +395,7 @@ entry:
|
||||
|
||||
; DELIN: 'Dependence Analysis' for function 'banerjee6':
|
||||
; DELIN: da analyze - none!
|
||||
; DELIN: da analyze - consistent flow [0 -9]!
|
||||
; DELIN: da analyze - flow [=> <>]!
|
||||
; DELIN: da analyze - confused!
|
||||
; DELIN: da analyze - none!
|
||||
; DELIN: da analyze - confused!
|
||||
@@ -454,7 +454,7 @@ entry:
|
||||
|
||||
; DELIN: 'Dependence Analysis' for function 'banerjee7':
|
||||
; DELIN: da analyze - none!
|
||||
; DELIN: da analyze - consistent flow [-1 0]!
|
||||
; DELIN: da analyze - flow [> <=]!
|
||||
; DELIN: da analyze - confused!
|
||||
; DELIN: da analyze - none!
|
||||
; DELIN: da analyze - confused!
|
||||
@@ -513,7 +513,7 @@ entry:
|
||||
|
||||
; DELIN: 'Dependence Analysis' for function 'banerjee8':
|
||||
; DELIN: da analyze - none!
|
||||
; DELIN: da analyze - consistent flow [-1 -1]!
|
||||
; DELIN: da analyze - flow [> <>]!
|
||||
; DELIN: da analyze - confused!
|
||||
; DELIN: da analyze - none!
|
||||
; DELIN: da analyze - confused!
|
||||
@@ -571,7 +571,7 @@ entry:
|
||||
; CHECK: da analyze - none!
|
||||
|
||||
; DELIN: 'Dependence Analysis' for function 'banerjee9':
|
||||
; DELIN: da analyze - none!
|
||||
; DELIN: da analyze - output [* *]!
|
||||
; DELIN: da analyze - flow [<= =|<]!
|
||||
; DELIN: da analyze - confused!
|
||||
; DELIN: da analyze - none!
|
||||
@@ -750,7 +750,7 @@ entry:
|
||||
|
||||
; DELIN: 'Dependence Analysis' for function 'banerjee12':
|
||||
; DELIN: da analyze - none!
|
||||
; DELIN: da analyze - consistent flow [0 -11]!
|
||||
; DELIN: da analyze - flow [= <>]!
|
||||
; DELIN: da analyze - confused!
|
||||
; DELIN: da analyze - none!
|
||||
; DELIN: da analyze - confused!
|
||||
|
@@ -24,10 +24,10 @@ entry:
|
||||
; CHECK: da analyze - none!
|
||||
|
||||
; DELIN: 'Dependence Analysis' for function 'gcd0'
|
||||
; DELIN: da analyze - none!
|
||||
; DELIN: da analyze - output [* *]!
|
||||
; DELIN: da analyze - flow [=> *|<]!
|
||||
; DELIN: da analyze - confused!
|
||||
; DELIN: da analyze - none!
|
||||
; DELIN: da analyze - input [* *]!
|
||||
; DELIN: da analyze - confused!
|
||||
; DELIN: da analyze - none!
|
||||
|
||||
@@ -85,10 +85,10 @@ entry:
|
||||
; CHECK: da analyze - none!
|
||||
|
||||
; DELIN: 'Dependence Analysis' for function 'gcd1'
|
||||
; DELIN: da analyze - none!
|
||||
; DELIN: da analyze - output [* *]!
|
||||
; DELIN: da analyze - none!
|
||||
; DELIN: da analyze - confused!
|
||||
; DELIN: da analyze - none!
|
||||
; DELIN: da analyze - input [* *]!
|
||||
; DELIN: da analyze - confused!
|
||||
; DELIN: da analyze - none!
|
||||
|
||||
@@ -147,10 +147,10 @@ entry:
|
||||
; CHECK: da analyze - none!
|
||||
|
||||
; DELIN: 'Dependence Analysis' for function 'gcd2'
|
||||
; DELIN: da analyze - none!
|
||||
; DELIN: da analyze - output [* *]!
|
||||
; DELIN: da analyze - none!
|
||||
; DELIN: da analyze - confused!
|
||||
; DELIN: da analyze - none!
|
||||
; DELIN: da analyze - input [* *]!
|
||||
; DELIN: da analyze - confused!
|
||||
; DELIN: da analyze - none!
|
||||
|
||||
@@ -269,10 +269,10 @@ entry:
|
||||
; CHECK: da analyze - none!
|
||||
|
||||
; DELIN: 'Dependence Analysis' for function 'gcd4'
|
||||
; DELIN: da analyze - output [* *]!
|
||||
; DELIN: da analyze - none!
|
||||
; DELIN: da analyze - none!
|
||||
; DELIN: da analyze - confused!
|
||||
; DELIN: da analyze - input [* *]!
|
||||
; DELIN: da analyze - none!
|
||||
; DELIN: da analyze - confused!
|
||||
; DELIN: da analyze - none!
|
||||
|
||||
@@ -339,10 +339,10 @@ entry:
|
||||
; CHECK: da analyze - none!
|
||||
|
||||
; DELIN: 'Dependence Analysis' for function 'gcd5'
|
||||
; DELIN: da analyze - output [* *]!
|
||||
; DELIN: da analyze - none!
|
||||
; DELIN: da analyze - flow [<> *]!
|
||||
; DELIN: da analyze - confused!
|
||||
; DELIN: da analyze - input [* *]!
|
||||
; DELIN: da analyze - none!
|
||||
; DELIN: da analyze - confused!
|
||||
; DELIN: da analyze - none!
|
||||
|
||||
@@ -411,7 +411,7 @@ entry:
|
||||
|
||||
; DELIN: 'Dependence Analysis' for function 'gcd6'
|
||||
; DELIN: da analyze - none!
|
||||
; DELIN: da analyze - none!
|
||||
; DELIN: da analyze - flow [=> =>|<]!
|
||||
; DELIN: da analyze - confused!
|
||||
; DELIN: da analyze - none!
|
||||
; DELIN: da analyze - confused!
|
||||
|
Reference in New Issue
Block a user