https://llvm.org/bugs/show_bug.cgi?id=27195
Johannes Doerfert <doerf...@cs.uni-saarland.de> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |REOPENED Resolution|FIXED |--- --- Comment #2 from Johannes Doerfert <doerf...@cs.uni-saarland.de> --- For the attached test case we get the following delinearization after r265379: Arrays { <4 x i16> MemRef_A[*][4]; // Element size 8 } ReadAccess := [Reduction Type: NONE] [Scalar: 0] [N, P] -> { Stmt_for_body[i0] -> MemRef_A[0, P + 7i0] }; MustWriteAccess := [Reduction Type: NONE] [Scalar: 0] [N, P] -> { Stmt_for_body[i0] -> MemRef_A[7i0, 0] }; However, this is not correct as it should be ReadAccess := [Reduction Type: NONE] [Scalar: 0] [N, P] -> { Stmt_for_body[i0] -> MemRef_A[7i0 + P, 0] }; which is not equivalent. If we turn of delinearization here we get the correct (one dimensional) result: Arrays { <4 x i16> MemRef_A[*]; // Element size 8 } ReadAccess := [Reduction Type: NONE] [Scalar: 0] [N, P] -> { Stmt_for_body[i0] -> MemRef_A[P + 7i0] }; MustWriteAccess := [Reduction Type: NONE] [Scalar: 0] [N, P] -> { Stmt_for_body[i0] -> MemRef_A[7i0] }; Note that the access functions are the same as they are after r265379 __but__ the base structure is not. Especially the write access functions after r265379 is in the first dimension, thus will be multiplied by 4 during linearization. This does not then not match the read access function. -- You are receiving this mail because: You are on the CC list for the bug.
_______________________________________________ llvm-bugs mailing list llvm-bugs@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs