Skip to content

Commit

Permalink
[LICM] Simplify isLoadInvariantInLoop given opaque pointers
Browse files Browse the repository at this point in the history
Since we no longer support typed pointers in LLVM IR, the PtrASXTy
in isLoadInvariantInLoop was set to be equal to Addr->getType() (an
opaque ptr in the same address space). That made the loop looking
through bitcasts redundant.
  • Loading branch information
bjope committed Sep 14, 2023
1 parent 66aa9a2 commit 83f38f9
Showing 1 changed file with 1 addition and 16 deletions.
17 changes: 1 addition & 16 deletions llvm/lib/Transforms/Scalar/LICM.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1039,7 +1039,7 @@ bool llvm::hoistRegion(DomTreeNode *N, AAResults *AA, LoopInfo *LI,
// invariant.start has no uses.
static bool isLoadInvariantInLoop(LoadInst *LI, DominatorTree *DT,
Loop *CurLoop) {
Value *Addr = LI->getOperand(0);
Value *Addr = LI->getPointerOperand();
const DataLayout &DL = LI->getModule()->getDataLayout();
const TypeSize LocSizeInBits = DL.getTypeSizeInBits(LI->getType());

Expand All @@ -1055,21 +1055,6 @@ static bool isLoadInvariantInLoop(LoadInst *LI, DominatorTree *DT,
if (LocSizeInBits.isScalable())
return false;

// if the type is ptr addrspace(x), we know this is the type of
// llvm.invariant.start operand
auto *PtrASXTy = PointerType::get(LI->getContext(),
LI->getPointerAddressSpace());
unsigned BitcastsVisited = 0;
// Look through bitcasts until we reach the PtrASXTy type (this is
// invariant.start operand type).
// FIXME: We shouldn't really find such bitcasts with opaque pointers.
while (Addr->getType() != PtrASXTy) {
auto *BC = dyn_cast<BitCastInst>(Addr);
// Avoid traversing high number of bitcast uses.
if (++BitcastsVisited > MaxNumUsesTraversed || !BC)
return false;
Addr = BC->getOperand(0);
}
// If we've ended up at a global/constant, bail. We shouldn't be looking at
// uselists for non-local Values in a loop pass.
if (isa<Constant>(Addr))
Expand Down

0 comments on commit 83f38f9

Please sign in to comment.