[PATCH] D54032: [ARM] Add some asserts to ARMCGP
Sam Parker via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Nov 2 03:39:20 PDT 2018
samparker created this revision.
samparker added reviewers: dmgreen, SjoerdMeijer.
Herald added subscribers: chrib, kristof.beyls, javed.absar.
Bit of a clear up after yesterday:
- added a few assertions.
- replaced another cast with dyn_cast.
- cleared a couple more data structures after type promotion.
https://reviews.llvm.org/D54032
Files:
lib/Target/ARM/ARMCodeGenPrepare.cpp
Index: lib/Target/ARM/ARMCodeGenPrepare.cpp
===================================================================
--- lib/Target/ARM/ARMCodeGenPrepare.cpp
+++ lib/Target/ARM/ARMCodeGenPrepare.cpp
@@ -114,8 +114,8 @@
SmallPtrSet<Value*, 8> Promoted;
Module *M = nullptr;
LLVMContext &Ctx;
- Type *ExtTy = nullptr;
- Type *OrigTy = nullptr;
+ IntegerType *ExtTy = nullptr;
+ IntegerType *OrigTy = nullptr;
void PrepareConstants(SmallPtrSetImpl<Value*> &Visited,
SmallPtrSetImpl<Instruction*> &SafeToPromote);
@@ -139,6 +139,8 @@
}
InstsToRemove.clear();
NewInsts.clear();
+ TruncTysMap.clear();
+ Promoted.clear();
}
void Mutate(Type *OrigTy,
@@ -514,21 +516,24 @@
IRBuilder<> Builder{Ctx};
auto InsertZExt = [&](Value *V, Instruction *InsertPt) {
+ assert(V->getType() != ExtTy && "zext already extends to i32");
LLVM_DEBUG(dbgs() << "ARM CGP: Inserting ZExt for " << *V << "\n");
Builder.SetInsertPoint(InsertPt);
if (auto *I = dyn_cast<Instruction>(V))
Builder.SetCurrentDebugLocation(I->getDebugLoc());
- auto *ZExt = cast<Instruction>(Builder.CreateZExt(V, ExtTy));
- if (isa<Argument>(V))
- ZExt->moveBefore(InsertPt);
- else
- ZExt->moveAfter(InsertPt);
+
+ Value *ZExt = Builder.CreateZExt(V, ExtTy);
+ if (auto *I = dyn_cast<Instruction>(ZExt)) {
+ if (isa<Argument>(V))
+ I->moveBefore(InsertPt);
+ else
+ I->moveAfter(InsertPt);
+ NewInsts.insert(I);
+ }
ReplaceAllUsersOfWith(V, ZExt);
- NewInsts.insert(ZExt);
TruncTysMap[ZExt] = TruncTysMap[V];
};
-
// Now, insert extending instructions between the sources and their users.
LLVM_DEBUG(dbgs() << "ARM CGP: Promoting sources:\n");
for (auto V : Sources) {
@@ -673,7 +678,11 @@
SmallPtrSetImpl<Instruction*> &SafeToPromote) {
LLVM_DEBUG(dbgs() << "ARM CGP: Promoting use-def chains to from "
<< ARMCodeGenPrepare::TypeSize << " to 32-bits\n");
- this->OrigTy = OrigTy;
+
+ assert(isa<IntegerType>(OrigTy) && "expected integer type");
+ this->OrigTy = cast<IntegerType>(OrigTy);
+ assert(OrigTy->getPrimitiveSizeInBits() < ExtTy->getPrimitiveSizeInBits() &&
+ "original type not smaller than extended type");
// Cache original types.
for (auto *V : Visited)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D54032.172334.patch
Type: text/x-patch
Size: 2367 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20181102/9ef2633a/attachment.bin>
More information about the llvm-commits
mailing list