aboutsummaryrefslogtreecommitdiffstats
path: root/lib/VMCore
diff options
context:
space:
mode:
authorGabor Greif <ggreif@gmail.com>2009-02-27 08:41:37 +0000
committerGabor Greif <ggreif@gmail.com>2009-02-27 08:41:37 +0000
commitf1dce3cf05a58cfa05bcb9a3e9b8f1bf5f2de217 (patch)
treec54400d09f9606629635d0a926cb5999440ca74c /lib/VMCore
parenta0d77d758b6c42172851c002d4d61bf8f672678b (diff)
downloadexternal_llvm-f1dce3cf05a58cfa05bcb9a3e9b8f1bf5f2de217.zip
external_llvm-f1dce3cf05a58cfa05bcb9a3e9b8f1bf5f2de217.tar.gz
external_llvm-f1dce3cf05a58cfa05bcb9a3e9b8f1bf5f2de217.tar.bz2
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65626 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/VMCore')
-rw-r--r--lib/VMCore/BasicBlock.cpp34
1 files changed, 0 insertions, 34 deletions
diff --git a/lib/VMCore/BasicBlock.cpp b/lib/VMCore/BasicBlock.cpp
index a76f659..66ee99d 100644
--- a/lib/VMCore/BasicBlock.cpp
+++ b/lib/VMCore/BasicBlock.cpp
@@ -31,40 +31,6 @@ ilist_traits<Instruction>::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<Instruction>(V) && classof(cast<Instruction>(V));
- }
- };
-}
-
-Instruction *ilist_traits<Instruction>::createSentinel() {
- return new DummyInst();
-}
iplist<Instruction> &ilist_traits<Instruction>::getList(BasicBlock *BB) {
return BB->getInstList();
}