[PATCH] D122857: [LoopCacheAnalysis] Enable delinearization of fixed sized arrays
Nikita Popov via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Apr 5 11:40:05 PDT 2022
nikic added inline comments.
================
Comment at: llvm/lib/Analysis/LoopCacheAnalysis.cpp:335
+ SmallVector<int, 4> SrcSizes;
+ getIndexExpressionsFromGEP(*SE, SrcGEP, SrcSubscripts, SrcSizes);
+
----------------
So, I guess this is something of a pre-existing issue, but this API looks completely broken to me. Deriving information from a GEP source element type is blatantly illegal under IR semantics -- in particular, the array bounds specified therein may be completely arbitrary.
The correct way to derive such information is from SCEV addrec expressions. For example in your first test you have `%arrayidx10` with SCEV `{{(8 + %a)<nuw>,+,8192}<nuw><%for.body>,+,4}<nuw><%for.body4>`, and the steps of those addrecs //are// semantically meaningful.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D122857/new/
https://reviews.llvm.org/D122857
More information about the llvm-commits
mailing list