aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGabor Greif <ggreif@gmail.com>2009-03-04 06:57:48 +0000
committerGabor Greif <ggreif@gmail.com>2009-03-04 06:57:48 +0000
commit5a5050691387d6e065d384b0e29c7bcf9ea52045 (patch)
treeaaea2b823dc215090f5792c8cd12d6479b8f7716
parent75952171f7296404d449e263867322a7a91a36e4 (diff)
downloadexternal_llvm-5a5050691387d6e065d384b0e29c7bcf9ea52045.tar.gz
external_llvm-5a5050691387d6e065d384b0e29c7bcf9ea52045.tar.bz2
external_llvm-5a5050691387d6e065d384b0e29c7bcf9ea52045.zip
"Ghostify" embedded sentinels. This is a real win in all cases
because less bytes are allocated and subobject construction is gone. For reference how it works, see BasicBlock.h. Btw. it is very assuring to see that somebody has invented this ilist-embedded sentinel technique before me :-) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66026 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/llvm/CodeGen/MachineBasicBlock.h6
-rw-r--r--include/llvm/CodeGen/MachineFunction.h6
-rw-r--r--include/llvm/CodeGen/SelectionDAG.h7
3 files changed, 10 insertions, 9 deletions
diff --git a/include/llvm/CodeGen/MachineBasicBlock.h b/include/llvm/CodeGen/MachineBasicBlock.h
index 54ac47008f..5a9f3991f2 100644
--- a/include/llvm/CodeGen/MachineBasicBlock.h
+++ b/include/llvm/CodeGen/MachineBasicBlock.h
@@ -26,14 +26,16 @@ class MachineFunction;
template <>
struct ilist_traits<MachineInstr> : public ilist_default_traits<MachineInstr> {
private:
- mutable MachineInstr Sentinel;
+ mutable ilist_node<MachineInstr> Sentinel;
// this is only set by the MachineBasicBlock owning the LiveList
friend class MachineBasicBlock;
MachineBasicBlock* Parent;
public:
- MachineInstr *createSentinel() const { return &Sentinel; }
+ MachineInstr *createSentinel() const {
+ return static_cast<MachineInstr*>(&Sentinel);
+ }
void destroySentinel(MachineInstr *) const {}
void addNodeToList(MachineInstr* N);
diff --git a/include/llvm/CodeGen/MachineFunction.h b/include/llvm/CodeGen/MachineFunction.h
index 689e4357b1..1371f1d0cd 100644
--- a/include/llvm/CodeGen/MachineFunction.h
+++ b/include/llvm/CodeGen/MachineFunction.h
@@ -37,9 +37,11 @@ class TargetMachine;
template <>
struct ilist_traits<MachineBasicBlock>
: public ilist_default_traits<MachineBasicBlock> {
- mutable MachineBasicBlock Sentinel;
+ mutable ilist_node<MachineBasicBlock> Sentinel;
public:
- MachineBasicBlock *createSentinel() const { return &Sentinel; }
+ MachineBasicBlock *createSentinel() const {
+ return static_cast<MachineBasicBlock*>(&Sentinel);
+ }
void destroySentinel(MachineBasicBlock *) const {}
void addNodeToList(MachineBasicBlock* MBB);
diff --git a/include/llvm/CodeGen/SelectionDAG.h b/include/llvm/CodeGen/SelectionDAG.h
index 9ecba590dd..fe89fe0546 100644
--- a/include/llvm/CodeGen/SelectionDAG.h
+++ b/include/llvm/CodeGen/SelectionDAG.h
@@ -39,13 +39,10 @@ class FunctionLoweringInfo;
template<> struct ilist_traits<SDNode> : public ilist_default_traits<SDNode> {
private:
- mutable SDNode Sentinel;
+ mutable ilist_node<SDNode> Sentinel;
public:
- ilist_traits() : Sentinel(ISD::DELETED_NODE, DebugLoc::getUnknownLoc(),
- SDVTList()) {}
-
SDNode *createSentinel() const {
- return &Sentinel;
+ return static_cast<SDNode*>(&Sentinel);
}
static void destroySentinel(SDNode *) {}