[llvm-commits] CVS: llvm/include/llvm/CodeGen/SelectionDAG.h

Evan Cheng evan.cheng at apple.com
Thu Feb 9 14:11:15 PST 2006



Changes in directory llvm/include/llvm/CodeGen:

SelectionDAG.h updated: 1.96 -> 1.97
---
Log message:

Added SelectionDAG::InsertISelMapEntry(). This is used to workaround the gcc
problem where it inline the map insertion call too aggressively. Before this
change it was producing a frame size of 24k for Select_store(), now it's down
to 10k (by calling this method rather than calling the map insertion operator).


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

 SelectionDAG.h |   10 ++++++++--
 1 files changed, 8 insertions(+), 2 deletions(-)


Index: llvm/include/llvm/CodeGen/SelectionDAG.h
diff -u llvm/include/llvm/CodeGen/SelectionDAG.h:1.96 llvm/include/llvm/CodeGen/SelectionDAG.h:1.97
--- llvm/include/llvm/CodeGen/SelectionDAG.h:1.96	Thu Feb  9 01:15:23 2006
+++ llvm/include/llvm/CodeGen/SelectionDAG.h	Thu Feb  9 16:11:03 2006
@@ -395,14 +395,20 @@
                           std::vector<SDNode*> *Deleted = 0);
   void ReplaceAllUsesWith(SDNode *From, const std::vector<SDOperand> &To,
                           std::vector<SDNode*> *Deleted = 0);
-  
-  
+
   /// DeleteNode - Remove the specified node from the system.  This node must
   /// have no referrers.
   void DeleteNode(SDNode *N);
   
   void dump() const;
 
+  /// InsertISelMapEntry - A helper function to insert a key / element pair
+  /// into a SDOperand to SDOperand map. This is added to avoid the map
+  /// insertion operator from being inlined.
+  static void InsertISelMapEntry(std::map<SDOperand, SDOperand> &Map,
+                                 SDNode *Key, unsigned KeyResNo,
+                                 SDNode *Element, unsigned ElementResNo);
+  
 private:
   void RemoveNodeFromCSEMaps(SDNode *N);
   SDNode *AddNonLeafNodeToCSEMaps(SDNode *N);






More information about the llvm-commits mailing list