[PATCH] D152281: [Transforms][LICM] Add the ability to undo unprofitable reassociation
Nikita Popov via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Jul 21 06:46:01 PDT 2023
nikic added inline comments.
================
Comment at: llvm/lib/Transforms/Scalar/LICM.cpp:2725
+ if (Use *U =
+ Ops[L.isLoopInvariant(Ops[0]) ? 0 : 1]->getSingleUndroppableUse())
+ Changes.push_back(U);
----------------
This should be `&Op->getOperandUse(Ops[L.isLoopInvariant(Ops[0]) ? 0 : 1])` or so. But I think it would be less awkward to do something like this, so you don't go back and forth between operand indices, Values and Uses:
```
if (Op->getOpcode() != Instruction::FMul) {
if (OpNext->getOpcode() != Instruction::FMul)
return false;
std::swap(Op, OpNext);
}
if (!Op->hasOneUse() || !Op->hasAllowReassoc() || L.isLoopInvariant(Op))
return false;
Use &U0 = Op->getOperandUse(0);
Use &U1 = Op->getOperandUse(1);
if (L.isLoopInvariant(U0))
Changes.push_back(&U0);
else if (L.isLoopInvariant(U1))
Changes.push_back(&U1);
else
return false;
```
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D152281/new/
https://reviews.llvm.org/D152281
More information about the llvm-commits
mailing list