[PATCH] D109760: [GVN] Simple GVN hoist
JunMa via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Sep 14 19:57:17 PDT 2021
junparser added a comment.
Thanks for your patch!
================
Comment at: llvm/lib/Transforms/Scalar/GVN.cpp:2494
+ bool RunAgain = true;
+ while (RunAgain) {
+ bool HoistedAny;
----------------
It is better to add parameter like gvn-hoist-max-chain-length in gvnhoist here based on running data from spec.
================
Comment at: llvm/lib/Transforms/Scalar/GVN.cpp:2842
+ return I.isVolatile() || I.isAtomic() ||
+ !isGuaranteedToTransferExecutionToSuccessor(&I);
+}
----------------
can you give an example that when I can not transfer execution, how do subsequent instructions in BB to be hoisted? IMHO, collectHoistCandidates should stop here.
================
Comment at: llvm/lib/Transforms/Scalar/GVN.cpp:2860
+ // appearing as operands in hoisted instructions).
+ if (isa<GetElementPtrInst>(&I))
+ continue;
----------------
Is there any reason not to handle GEPs?
================
Comment at: llvm/lib/Transforms/Scalar/GVN.cpp:3034
+ // Hoisting these creates opportunities for more hoisting.
+ if (P.first->mayReadOrWriteMemory() || isHoistBarrier(*P.first))
+ RunAgain = true;
----------------
ditto
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D109760/new/
https://reviews.llvm.org/D109760
More information about the llvm-commits
mailing list