From bf4da856e4ff5b8333a456411e3e3222a4453544 Mon Sep 17 00:00:00 2001 From: Gabor Greif Date: Fri, 27 Feb 2009 08:41:37 +0000 Subject: Introduce a new technique for merging BasicBlock with Instruction sentinel by superposition. This looks dangerous, but isn't because the sentinel is accessed in special way only, namely the Next and Prev fields of it, and these are guaranteed to exist. llvm-svn: 65626 --- llvm/lib/VMCore/BasicBlock.cpp | 34 ---------------------------------- 1 file changed, 34 deletions(-) (limited to 'llvm/lib/VMCore/BasicBlock.cpp') diff --git a/llvm/lib/VMCore/BasicBlock.cpp b/llvm/lib/VMCore/BasicBlock.cpp index a76f659233d..66ee99d1745 100644 --- a/llvm/lib/VMCore/BasicBlock.cpp +++ b/llvm/lib/VMCore/BasicBlock.cpp @@ -31,40 +31,6 @@ ilist_traits::getSymTab(BasicBlock *BB) { return 0; } - -namespace { - /// DummyInst - An instance of this class is used to mark the end of the - /// instruction list. This is not a real instruction. - struct VISIBILITY_HIDDEN DummyInst : public Instruction { - // allocate space for exactly zero operands - void *operator new(size_t s) { - return User::operator new(s, 0); - } - DummyInst() : Instruction(Type::VoidTy, OtherOpsEnd, 0, 0) { - // This should not be garbage monitored. - LeakDetector::removeGarbageObject(this); - } - - Instruction *clone() const { - assert(0 && "Cannot clone EOL");abort(); - return 0; - } - const char *getOpcodeName() const { return "*end-of-list-inst*"; } - - // Methods for support type inquiry through isa, cast, and dyn_cast... - static inline bool classof(const DummyInst *) { return true; } - static inline bool classof(const Instruction *I) { - return I->getOpcode() == OtherOpsEnd; - } - static inline bool classof(const Value *V) { - return isa(V) && classof(cast(V)); - } - }; -} - -Instruction *ilist_traits::createSentinel() { - return new DummyInst(); -} iplist &ilist_traits::getList(BasicBlock *BB) { return BB->getInstList(); } -- cgit v1.2.3