[llvm-commits] [llvm] r49581 - in /llvm/branches/ggreif/use-diet: include/llvm/BasicBlock.h lib/VMCore/BasicBlock.cpp
Gabor Greif
ggreif at gmail.com
Sat Apr 12 01:14:40 PDT 2008
Author: ggreif
Date: Sat Apr 12 03:14:39 2008
New Revision: 49581
URL: http://llvm.org/viewvc/llvm-project?rev=49581&view=rev
Log:
trait-ize BasicBlock
Modified:
llvm/branches/ggreif/use-diet/include/llvm/BasicBlock.h
llvm/branches/ggreif/use-diet/lib/VMCore/BasicBlock.cpp
Modified: llvm/branches/ggreif/use-diet/include/llvm/BasicBlock.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/ggreif/use-diet/include/llvm/BasicBlock.h?rev=49581&r1=49580&r2=49581&view=diff
==============================================================================
--- llvm/branches/ggreif/use-diet/include/llvm/BasicBlock.h (original)
+++ llvm/branches/ggreif/use-diet/include/llvm/BasicBlock.h Sat Apr 12 03:14:39 2008
@@ -18,6 +18,7 @@
#include "llvm/SymbolTableListTraits.h"
#include "llvm/ADT/ilist"
#include "llvm/Support/DataTypes.h"
+#include "llvm/OperandTraits.h"
namespace llvm {
@@ -56,7 +57,6 @@
InstListType InstList;
BasicBlock *Prev, *Next; // Next and Prev links for our intrusive linked list
Function *Parent;
-/* Use unwindDest;*/
void setParent(Function *parent);
void setNext(BasicBlock *N) { Next = N; }
@@ -80,10 +80,13 @@
// allocate space for exactly zero operands
static BasicBlock *Create(const std::string &Name = "", Function *Parent = 0,
BasicBlock *InsertBefore = 0, BasicBlock *UnwindDest = 0) {
- return new(!!UnwindDest) BasicBlock(Name, Parent, InsertBefore, UnwindDest);
+ return new(1) BasicBlock(Name, Parent, InsertBefore, UnwindDest);
}
~BasicBlock();
+ /// Provide fast operand accessors
+ DECLARE_TRANSPARENT_OPERAND_ACCESSORS(Value);
+
/// getUnwindDest - Returns the BasicBlock that flow will enter if an unwind
/// instruction occurs in this block. May be null, in which case unwinding
/// is undefined in this block.
@@ -230,6 +233,12 @@
return BasicBlock::getInstListOffset();
}
+template <>
+struct OperandTraits<BasicBlock> : OptionalOperandTraits<> {
+};
+
+DEFINE_TRANSPARENT_OPERAND_ACCESSORS(BasicBlock, Value)
+
} // End llvm namespace
#endif
Modified: llvm/branches/ggreif/use-diet/lib/VMCore/BasicBlock.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/ggreif/use-diet/lib/VMCore/BasicBlock.cpp?rev=49581&r1=49580&r2=49581&view=diff
==============================================================================
--- llvm/branches/ggreif/use-diet/lib/VMCore/BasicBlock.cpp (original)
+++ llvm/branches/ggreif/use-diet/lib/VMCore/BasicBlock.cpp Sat Apr 12 03:14:39 2008
@@ -75,7 +75,9 @@
BasicBlock::BasicBlock(const std::string &Name, Function *NewParent,
BasicBlock *InsertBefore, BasicBlock *Dest)
- : User(Type::LabelTy, Value::BasicBlockVal, &Op<0>()/*unwindDest*/, 0/*FIXME*/), Parent(0) {
+ : User(Type::LabelTy, Value::BasicBlockVal,
+ OperandTraits<BasicBlock>::op_begin(this),
+ !!Dest), Parent(0) {
// Make sure that we get added to a function
LeakDetector::addGarbageObject(this);
@@ -89,7 +91,7 @@
}
setName(Name);
- // Op<0>()./*unwindDest.*/init(NULL, this); /*FIXME*/
+
if (Dest)
setUnwindDest(Dest);
}
@@ -133,9 +135,8 @@
}
void BasicBlock::setUnwindDest(BasicBlock *dest) {
-// NumOperands = unwindDest ? 1 : 0;
- if (dest) // FIXME
- Op<0>().set(dest);
+ NumOperands = dest ? 1 : 0;
+ Op<0>().set(dest);
}
/// moveBefore - Unlink this basic block from its current function and
@@ -293,7 +294,7 @@
assert(I != InstList.end() &&
"Trying to get me to create degenerate basic block!");
- BasicBlock *New = new(0/*FIXME*/) BasicBlock(BBName, getParent(), getNext());
+ BasicBlock *New = new(1) BasicBlock(BBName, getParent(), getNext());
// Move all of the specified instructions from the original basic block into
// the new basic block.
More information about the llvm-commits
mailing list