[llvm-commits] CVS: llvm/include/llvm/BasicBlock.h

2007-04-17 Thread Chris Lattner


Changes in directory llvm/include/llvm:

BasicBlock.h updated: 1.67 - 1.68
---
Log message:

make next/prev accessors private


---
Diffs of the changes:  (+8 -6)

 BasicBlock.h |   14 --
 1 files changed, 8 insertions(+), 6 deletions(-)


Index: llvm/include/llvm/BasicBlock.h
diff -u llvm/include/llvm/BasicBlock.h:1.67 llvm/include/llvm/BasicBlock.h:1.68
--- llvm/include/llvm/BasicBlock.h:1.67 Tue Apr 17 00:33:04 2007
+++ llvm/include/llvm/BasicBlock.h  Tue Apr 17 13:16:39 2007
@@ -82,12 +82,6 @@
   const Function *getParent() const { return Parent; }
 Function *getParent()   { return Parent; }
 
-  // getNext/Prev - Return the next or previous basic block in the list.
-BasicBlock *getNext()   { return Next; }
-  const BasicBlock *getNext() const { return Next; }
-BasicBlock *getPrev()   { return Prev; }
-  const BasicBlock *getPrev() const { return Prev; }
-
   /// use_back - Specialize the methods defined in Value, as we know that an
   /// BasicBlock can only be used by Instructions (specifically PHI and terms).
   Instruction   *use_back()   { return 
castInstruction(*use_begin());}
@@ -201,6 +195,14 @@
 BasicBlock *Obj = 0;
 return unsigned(reinterpret_castuintptr_t(Obj-InstList));
   }
+
+private:
+  // getNext/Prev - Return the next or previous basic block in the list.  
Access
+  // these with Function::iterator.
+  BasicBlock *getNext()   { return Next; }
+  const BasicBlock *getNext() const { return Next; }
+  BasicBlock *getPrev()   { return Prev; }
+  const BasicBlock *getPrev() const { return Prev; }
 };
 
 inline int 



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/include/llvm/BasicBlock.h Function.h Module.h SymbolTableListTraits.h

2007-04-16 Thread Chris Lattner


Changes in directory llvm/include/llvm:

BasicBlock.h updated: 1.65 - 1.66
Function.h updated: 1.76 - 1.77
Module.h updated: 1.86 - 1.87
SymbolTableListTraits.h updated: 1.6 - 1.7
---
Log message:

The (negative) offset from a SymbolTableListTraits-using ilist to its container
object is always constant.  As such, evaluate it at compile time instead of 
storing
it as an ivar in SymbolTableListTraits.  This shrinks every 
SymbolTableListTraits
ilist by a word, shrinking BasicBlock from 44-40 bytes, Function from 96-88 
bytes,
and Module from 60-52 bytes.


---
Diffs of the changes:  (+61 -3)

 BasicBlock.h|   12 
 Function.h  |   22 ++
 Module.h|   20 
 SymbolTableListTraits.h |   10 +++---
 4 files changed, 61 insertions(+), 3 deletions(-)


Index: llvm/include/llvm/BasicBlock.h
diff -u llvm/include/llvm/BasicBlock.h:1.65 llvm/include/llvm/BasicBlock.h:1.66
--- llvm/include/llvm/BasicBlock.h:1.65 Mon Apr 16 22:26:42 2007
+++ llvm/include/llvm/BasicBlock.h  Mon Apr 16 23:04:14 2007
@@ -31,6 +31,7 @@
   static void destroySentinel(Instruction *I) { delete I; }
   static iplistInstruction getList(BasicBlock *BB);
   static ValueSymbolTable *getSymTab(BasicBlock *ItemParent);
+  static int getListOffset();
 };
 
 /// This represents a single basic block in LLVM. A basic block is simply a
@@ -194,8 +195,19 @@
   /// the basic block).
   ///
   BasicBlock *splitBasicBlock(iterator I, const std::string BBName = );
+  
+  
+  static unsigned getInstListOffset() {
+BasicBlock *Obj = 0;
+return reinterpret_castunsigned(Obj-InstList);
+  }
 };
 
+inline int 
+ilist_traitsInstruction::getListOffset() {
+  return BasicBlock::getInstListOffset();
+}
+
 } // End llvm namespace
 
 #endif


Index: llvm/include/llvm/Function.h
diff -u llvm/include/llvm/Function.h:1.76 llvm/include/llvm/Function.h:1.77
--- llvm/include/llvm/Function.h:1.76   Mon Apr 16 22:26:42 2007
+++ llvm/include/llvm/Function.hMon Apr 16 23:04:14 2007
@@ -37,6 +37,7 @@
   static void destroySentinel(BasicBlock *BB) { delete BB; }
   static iplistBasicBlock getList(Function *F);
   static ValueSymbolTable *getSymTab(Function *ItemParent);
+  static int getListOffset();
 };
 
 template struct ilist_traitsArgument
@@ -47,6 +48,7 @@
   static void destroySentinel(Argument *A) { delete A; }
   static iplistArgument getList(Function *F);
   static ValueSymbolTable *getSymTab(Function *ItemParent);
+  static int getListOffset();
 };
 
 class Function : public GlobalValue, public Annotable {
@@ -238,6 +240,15 @@
   /// including any contained basic blocks.
   ///
   void dropAllReferences();
+  
+  static unsigned getBasicBlockListOffset() {
+Function *Obj = 0;
+return reinterpret_castunsigned(Obj-BasicBlocks);
+  }
+  static unsigned getArgumentListOffset() {
+Function *Obj = 0;
+return reinterpret_castunsigned(Obj-ArgumentList);
+  }
 };
 
 inline ValueSymbolTable *
@@ -250,6 +261,17 @@
   return F ? F-getValueSymbolTable() : 0;
 }
 
+inline int 
+ilist_traitsBasicBlock::getListOffset() {
+  return Function::getBasicBlockListOffset();
+}
+
+inline int 
+ilist_traitsArgument::getListOffset() {
+  return Function::getArgumentListOffset();
+}
+
+
 } // End llvm namespace
 
 #endif


Index: llvm/include/llvm/Module.h
diff -u llvm/include/llvm/Module.h:1.86 llvm/include/llvm/Module.h:1.87
--- llvm/include/llvm/Module.h:1.86 Mon Apr 16 22:26:42 2007
+++ llvm/include/llvm/Module.h  Mon Apr 16 23:04:14 2007
@@ -32,6 +32,7 @@
   static void destroySentinel(Function *F) { delete F; }
   static iplistFunction getList(Module *M);
   static inline ValueSymbolTable *getSymTab(Module *M);
+  static int getListOffset();
 };
 template struct ilist_traitsGlobalVariable
   : public SymbolTableListTraitsGlobalVariable, Module {
@@ -40,6 +41,7 @@
   static void destroySentinel(GlobalVariable *GV) { delete GV; }
   static iplistGlobalVariable getList(Module *M);
   static inline ValueSymbolTable *getSymTab(Module *M);
+  static int getListOffset();
 };
 
 /// A Module instance is used to store all the information related to an
@@ -313,6 +315,15 @@
   /// that has dropped all references, except operator delete.
   void dropAllReferences();
 /// @}
+
+  static unsigned getFunctionListOffset() {
+Module *Obj = 0;
+return reinterpret_castunsigned(Obj-FunctionList);
+  }
+  static unsigned getGlobalVariableListOffset() {
+Module *Obj = 0;
+return reinterpret_castunsigned(Obj-GlobalList);
+  }
 };
 
 /// An iostream inserter for modules.
@@ -331,6 +342,15 @@
   return M ? M-getValueSymbolTable() : 0;
 }
 
+inline int 
+ilist_traitsFunction::getListOffset() {
+  return Module::getFunctionListOffset();
+}
+
+inline int 
+ilist_traitsGlobalVariable::getListOffset() {
+  return Module::getGlobalVariableListOffset();
+}
 
 } // End llvm namespace
 


Index: llvm/include/llvm/SymbolTableListTraits.h
diff -u 

[llvm-commits] CVS: llvm/include/llvm/BasicBlock.h Function.h Module.h

2007-04-16 Thread Jeff Cohen


Changes in directory llvm/include/llvm:

BasicBlock.h updated: 1.66 - 1.67
Function.h updated: 1.78 - 1.79
Module.h updated: 1.87 - 1.88
---
Log message:

Fix build breakage on 64-bit systems.

---
Diffs of the changes:  (+5 -5)

 BasicBlock.h |2 +-
 Function.h   |4 ++--
 Module.h |4 ++--
 3 files changed, 5 insertions(+), 5 deletions(-)


Index: llvm/include/llvm/BasicBlock.h
diff -u llvm/include/llvm/BasicBlock.h:1.66 llvm/include/llvm/BasicBlock.h:1.67
--- llvm/include/llvm/BasicBlock.h:1.66 Mon Apr 16 23:04:14 2007
+++ llvm/include/llvm/BasicBlock.h  Tue Apr 17 00:33:04 2007
@@ -199,7 +199,7 @@
   
   static unsigned getInstListOffset() {
 BasicBlock *Obj = 0;
-return reinterpret_castunsigned(Obj-InstList);
+return unsigned(reinterpret_castuintptr_t(Obj-InstList));
   }
 };
 


Index: llvm/include/llvm/Function.h
diff -u llvm/include/llvm/Function.h:1.78 llvm/include/llvm/Function.h:1.79
--- llvm/include/llvm/Function.h:1.78   Mon Apr 16 23:31:29 2007
+++ llvm/include/llvm/Function.hTue Apr 17 00:33:04 2007
@@ -246,11 +246,11 @@
   
   static unsigned getBasicBlockListOffset() {
 Function *Obj = 0;
-return reinterpret_castunsigned(Obj-BasicBlocks);
+return unsigned(reinterpret_castuintptr_t(Obj-BasicBlocks));
   }
   static unsigned getArgumentListOffset() {
 Function *Obj = 0;
-return reinterpret_castunsigned(Obj-ArgumentList);
+return unsigned(reinterpret_castuintptr_t(Obj-ArgumentList));
   }
 };
 


Index: llvm/include/llvm/Module.h
diff -u llvm/include/llvm/Module.h:1.87 llvm/include/llvm/Module.h:1.88
--- llvm/include/llvm/Module.h:1.87 Mon Apr 16 23:04:14 2007
+++ llvm/include/llvm/Module.h  Tue Apr 17 00:33:04 2007
@@ -318,11 +318,11 @@
 
   static unsigned getFunctionListOffset() {
 Module *Obj = 0;
-return reinterpret_castunsigned(Obj-FunctionList);
+return unsigned(reinterpret_castuintptr_t(Obj-FunctionList));
   }
   static unsigned getGlobalVariableListOffset() {
 Module *Obj = 0;
-return reinterpret_castunsigned(Obj-GlobalList);
+return unsigned(reinterpret_castuintptr_t(Obj-GlobalList));
   }
 };
 



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/include/llvm/BasicBlock.h Instruction.h

2006-09-30 Thread Chris Lattner


Changes in directory llvm/include/llvm:

BasicBlock.h updated: 1.60 - 1.61
Instruction.h updated: 1.73 - 1.74
---
Log message:

Override use_back in instruction/basicblock to provide more type information.


---
Diffs of the changes:  (+10 -1)

 BasicBlock.h  |5 +
 Instruction.h |6 +-
 2 files changed, 10 insertions(+), 1 deletion(-)


Index: llvm/include/llvm/BasicBlock.h
diff -u llvm/include/llvm/BasicBlock.h:1.60 llvm/include/llvm/BasicBlock.h:1.61
--- llvm/include/llvm/BasicBlock.h:1.60 Fri Sep 22 23:03:45 2006
+++ llvm/include/llvm/BasicBlock.h  Sat Sep 30 17:20:34 2006
@@ -85,6 +85,11 @@
 BasicBlock *getPrev()   { return Prev; }
   const BasicBlock *getPrev() const { return Prev; }
 
+  /// use_back - Specialize the methods defined in Value, as we know that an
+  /// BasicBlock can only be used by Instructions (specifically PHI and terms).
+  Instruction   *use_back()   { return 
castInstruction(*use_begin());}
+  const Instruction *use_back() const { return 
castInstruction(*use_begin());}
+  
   /// getTerminator() - If this is a well formed basic block, then this returns
   /// a pointer to the terminator instruction.  If it is not, then you get a
   /// null pointer back.


Index: llvm/include/llvm/Instruction.h
diff -u llvm/include/llvm/Instruction.h:1.73 
llvm/include/llvm/Instruction.h:1.74
--- llvm/include/llvm/Instruction.h:1.73Sun Sep 17 14:14:47 2006
+++ llvm/include/llvm/Instruction.h Sat Sep 30 17:20:34 2006
@@ -71,7 +71,11 @@
   /// extra information (e.g. load is volatile) agree.
   bool isIdenticalTo(Instruction *I) const;
 
-
+  /// use_back - Specialize the methods defined in Value, as we know that an
+  /// instruction can only be used by other instructions.
+  Instruction   *use_back()   { return 
castInstruction(*use_begin());}
+  const Instruction *use_back() const { return 
castInstruction(*use_begin());}
+  
   // Accessor methods...
   //
   inline const BasicBlock *getParent() const { return Parent; }



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/include/llvm/BasicBlock.h

2006-09-22 Thread Chris Lattner


Changes in directory llvm/include/llvm:

BasicBlock.h updated: 1.59 - 1.60
---
Log message:

add method, correct comment


---
Diffs of the changes:  (+7 -3)

 BasicBlock.h |   10 +++---
 1 files changed, 7 insertions(+), 3 deletions(-)


Index: llvm/include/llvm/BasicBlock.h
diff -u llvm/include/llvm/BasicBlock.h:1.59 llvm/include/llvm/BasicBlock.h:1.60
--- llvm/include/llvm/BasicBlock.h:1.59 Thu Jun  8 10:46:17 2006
+++ llvm/include/llvm/BasicBlock.h  Fri Sep 22 23:03:45 2006
@@ -109,10 +109,14 @@
   ///
   void eraseFromParent();
   
-  /// moveBefore - Unlink this instruction from its current function and
-  /// insert it into the function that MovePos lives in, right before
-  /// MovePos.
+  /// moveBefore - Unlink this basic block from its current function and
+  /// insert it into the function that MovePos lives in, right before MovePos.
   void moveBefore(BasicBlock *MovePos);
+  
+  /// moveAfter - Unlink this basic block from its current function and
+  /// insert it into the function that MovePos lives in, right after MovePos.
+  void moveAfter(BasicBlock *MovePos);
+  
 
   /// getSinglePredecessor - If this basic block has a single predecessor 
block,
   /// return the block, otherwise return a null pointer.



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/include/llvm/BasicBlock.h

2006-06-08 Thread Vladimir Prus


Changes in directory llvm/include/llvm:

BasicBlock.h updated: 1.58 - 1.59
---
Log message:

New method BasicBlock::getFirstNonPHI.


---
Diffs of the changes:  (+8 -1)

 BasicBlock.h |9 -
 1 files changed, 8 insertions(+), 1 deletion(-)


Index: llvm/include/llvm/BasicBlock.h
diff -u llvm/include/llvm/BasicBlock.h:1.58 llvm/include/llvm/BasicBlock.h:1.59
--- llvm/include/llvm/BasicBlock.h:1.58 Mon Jun  5 11:29:06 2006
+++ llvm/include/llvm/BasicBlock.h  Thu Jun  8 10:46:17 2006
@@ -91,7 +91,14 @@
   ///
   TerminatorInst *getTerminator();
   const TerminatorInst *const getTerminator() const;
-
+  
+  /// Returns a pointer to the first instructon in this block that is not a 
+  /// PHINode instruction. When adding instruction to the beginning of the
+  /// basic block, they should be added before the returned value, not before
+  /// the first instruction, which might be PHI.
+  /// Returns 0 is there's no non-PHI instruction.
+  Instruction* getFirstNonPHI();
+  
   /// removeFromParent - This method unlinks 'this' from the containing
   /// function, but does not delete it.
   ///



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits