For VNCoercion, skip scalable vector when analysis rely on fixed size,
otherwise call TypeSize::getFixedSize() explicitly.
Add unit tests to check funtionality of GVN load elimination for scalable type.
Paths
| Differential D76944
[GVN] Fix VNCoercion for Scalable Vector. ClosedPublic Authored by huihuiz on Mar 27 2020, 11:59 AM.
Details Summary For VNCoercion, skip scalable vector when analysis rely on fixed size, Add unit tests to check funtionality of GVN load elimination for scalable type.
Diff Detail
Unit TestsFailed Event Timeline
bjope added inline comments.
huihuiz mentioned this in D77828: [BasicAA] Fix aliasGEP/DecomposeGEPExpression for scalable type..Apr 9 2020, 2:08 PM huihuiz added a child revision: D77828: [BasicAA] Fix aliasGEP/DecomposeGEPExpression for scalable type.. huihuiz retitled this revision from [GVN] Fix VNCoercion/BasicAA for Scalable Vector. to [GVN] Fix VNCoercion for Scalable Vector..Apr 9 2020, 4:43 PM huihuiz added inline comments. This revision is now accepted and ready to land.Apr 9 2020, 5:22 PM Closed by commit rG6e7eeb44b305: [GVN] Fix VNCoercion for Scalable Vector. (authored by huihuiz). · Explain WhyApr 10 2020, 5:49 PM This revision was automatically updated to reflect the committed changes.
Revision Contents
Diff 253187 llvm/lib/Analysis/BasicAliasAnalysis.cpp
llvm/lib/Transforms/InstCombine/InstructionCombining.cpp
llvm/lib/Transforms/Utils/VNCoercion.cpp
llvm/test/Transforms/GVN/vscale.ll
|
Can you check DL.getTypeAllocSize(GEPIdxedTy).Scalable instead, since you're calling getTypeAllocSize anyway?
I don't think this is the right way to break out of this loop early; if the offset isn't recorded in "Decomposed", other code might assume it's zero?