JonChesterfield created this revision. JonChesterfield added reviewers: rjmccall, aaron.ballman, ABataev, jdoerfert, arsenm. Herald added subscribers: cfe-commits, wdng. Herald added a project: clang.
[nfc] Accept addrspacecast allocas in InitTempAlloca Changes the precondition to be slightly more permissive. Useful for amdgcn where allocas are created with a cast to an address space. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D78495 Files: clang/lib/CodeGen/CGExpr.cpp Index: clang/lib/CodeGen/CGExpr.cpp =================================================================== --- clang/lib/CodeGen/CGExpr.cpp +++ clang/lib/CodeGen/CGExpr.cpp @@ -125,8 +125,12 @@ } void CodeGenFunction::InitTempAlloca(Address Var, llvm::Value *Init) { - assert(isa<llvm::AllocaInst>(Var.getPointer())); - auto *Store = new llvm::StoreInst(Init, Var.getPointer()); + auto *Alloca = Var.getPointer(); + assert(isa<llvm::AllocaInst>(Alloca) || + (isa<llvm::AddrSpaceCastInst>(Alloca) && + isa<llvm::AllocaInst>( + cast<llvm::AddrSpaceCastInst>(Alloca)->getPointerOperand()))); + auto *Store = new llvm::StoreInst(Init, Alloca); Store->setAlignment(Var.getAlignment().getAsAlign()); llvm::BasicBlock *Block = AllocaInsertPt->getParent(); Block->getInstList().insertAfter(AllocaInsertPt->getIterator(), Store);
Index: clang/lib/CodeGen/CGExpr.cpp =================================================================== --- clang/lib/CodeGen/CGExpr.cpp +++ clang/lib/CodeGen/CGExpr.cpp @@ -125,8 +125,12 @@ } void CodeGenFunction::InitTempAlloca(Address Var, llvm::Value *Init) { - assert(isa<llvm::AllocaInst>(Var.getPointer())); - auto *Store = new llvm::StoreInst(Init, Var.getPointer()); + auto *Alloca = Var.getPointer(); + assert(isa<llvm::AllocaInst>(Alloca) || + (isa<llvm::AddrSpaceCastInst>(Alloca) && + isa<llvm::AllocaInst>( + cast<llvm::AddrSpaceCastInst>(Alloca)->getPointerOperand()))); + auto *Store = new llvm::StoreInst(Init, Alloca); Store->setAlignment(Var.getAlignment().getAsAlign()); llvm::BasicBlock *Block = AllocaInsertPt->getParent(); Block->getInstList().insertAfter(AllocaInsertPt->getIterator(), Store);
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits