Eliminated the Unique class in favor of NonCopyable and NonCopyableV
authorChris Lattner <sabre@nondot.org>
Mon, 23 Jul 2001 18:26:21 +0000 (18:26 +0000)
committerChris Lattner <sabre@nondot.org>
Mon, 23 Jul 2001 18:26:21 +0000 (18:26 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@280 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/CodeGen/InstrForest.h
include/llvm/CodeGen/MachineInstr.h
include/llvm/CodeGen/TargetMachine.h
include/llvm/DerivedTypes.h
include/llvm/Support/DataTypes.h
include/llvm/Support/NonCopyable.h [new file with mode: 0644]
include/llvm/Support/Unique.h [deleted file]
lib/CodeGen/InstrSelection/InstrForest.cpp
lib/CodeGen/MachineInstr.cpp
lib/Target/SparcV9/InstrSelection/InstrForest.cpp

index 2e1e9ea179a0bdd492fc0a57f38230ada470c7bc..66b9583421abfba25d52f069f8c81eb9706f7b85 100644 (file)
@@ -24,7 +24,7 @@
 #ifndef LLVM_CODEGEN_INSTRFOREST_H
 #define LLVM_CODEGEN_INSTRFOREST_H
 
-#include "llvm/Support/Unique.h"
+#include "llvm/Support/NonCopyable.h"
 #include "llvm/Instruction.h"
 #include <hash_map>
 #include <hash_set>
@@ -128,7 +128,7 @@ MainTreeNode(BasicTreeNode* node) {
 }
 
 
-class InstrTreeNode: public Unique {
+class InstrTreeNode : public NonCopyableV {
 public:
   enum InstrTreeNodeType { NTInstructionNode,
                           NTVRegListNode,
@@ -144,7 +144,7 @@ protected:
 public:
   /*ctor*/             InstrTreeNode   (InstrTreeNodeType nodeType,
                                         Value* _val);
-  /*dtor*/ virtual     ~InstrTreeNode  ();
+  /*dtor*/ virtual     ~InstrTreeNode  () {}
   
   BasicTreeNode*       getBasicNode    ()       { return &basicNode; }
   
@@ -239,7 +239,7 @@ protected:
 //------------------------------------------------------------------------ 
 
 class InstrForest :
-  public Unique,
+  public NonCopyable,
   private hash_map<const Instruction*, InstructionNode*> {
   
 private:
index 5c6fb62928abd0db22f437e8efcb969ce9a6de5f..36e11bc6d2963b14329427ff005aec1bc8ad4520 100644 (file)
@@ -17,7 +17,7 @@
 
 #include "llvm/CodeGen/InstrForest.h"
 #include "llvm/Support/DataTypes.h"
-#include "llvm/Support/Unique.h"
+#include "llvm/Support/NonCopyable.h"
 #include "llvm/CodeGen/TargetMachine.h"
 
 //---------------------------------------------------------------------------
@@ -177,7 +177,7 @@ MachineOperand::InitializeReg(unsigned int _regNum)
 //   opcode and set bits in opCodeMask for each of these flags.
 //---------------------------------------------------------------------------
 
-class MachineInstr : public Unique {
+class MachineInstr : public NonCopyable {
 private:
   MachineOpCode        opCode;
   OpCodeMask   opCodeMask;             // extra bits for variants of an opcode
@@ -187,7 +187,7 @@ public:
   /*ctor*/             MachineInstr    (MachineOpCode _opCode,
                                         OpCodeMask    _opCodeMask = 0x0);
   
-  /*dtor*/             ~MachineInstr   ();
+  inline               ~MachineInstr   () {}
   
   const MachineOpCode  getOpCode       () const;
   
index 0be7e54bafc0ce7987949f30416e4afe6eda9b19..141a484d9007b96842ef55ca58ac7206847631e3 100644 (file)
@@ -12,7 +12,7 @@
 #ifndef LLVM_CODEGEN_TARGETMACHINE_H
 #define LLVM_CODEGEN_TARGETMACHINE_H
 
-#include "llvm/Support/Unique.h"
+#include "llvm/Support/NonCopyable.h"
 #include "llvm/Support/DataTypes.h"
 #include <string>
 
@@ -70,7 +70,7 @@ extern const MachineInstrInfo* TargetMachineInstrInfo;
 // 
 //---------------------------------------------------------------------------
 
-class TargetMachine: public Unique {
+class TargetMachine : public NonCopyableV {
 public:
   int          optSizeForSubWordData;
   int          intSize;
index f58d01da2fbcfd230119baea7f82790849c93b6c..c5a3abdfe4804eaa1b21be264b1684e16bc4b201 100644 (file)
@@ -120,7 +120,7 @@ public:
 
 
   unsigned int getStorageSize(const TargetMachine& tmi) const {
-    if (layoutCache->targetInfo && *layoutCache->targetInfo != tmi) {
+    if (layoutCache->targetInfo && layoutCache->targetInfo != &tmi) {
       // target machine has changed (hey it could happen). discard cached info.
       ResetCachedInfo();
       layoutCache->targetInfo = &tmi;
@@ -134,7 +134,7 @@ public:
   }
   unsigned int getElementOffset(int i, const TargetMachine& tmi) const {
     // target machine has changed (hey it could happen). discard cached info.
-    if (layoutCache->targetInfo && *layoutCache->targetInfo != tmi)
+    if (layoutCache->targetInfo && layoutCache->targetInfo != &tmi)
       ResetCachedInfo();
   
     if (layoutCache->memberOffsets[i] < 0) {
index 84b8a65ab124611667a1b65e102baaebaffa2d7e..2f6947963c944195394df80d855bd073d3a5874f 100644 (file)
@@ -1,3 +1,16 @@
+//===-- include/Support/DataTypes.h - Define fixed size types ----*- C++ -*--=//
+//
+// This file contains definitions to figure out the size of _HOST_ data types.
+// This file is important because different host OS's define different macros,
+// which makes portability tough.  This file exports the following definitions:
+//
+//   LITTLE_ENDIAN: is #define'd if the host is little endian
+//   int64_t      : is a typedef for the signed 64 bit system type
+//   uint64_t     : is a typedef for the unsigned 64 bit system type
+//
+// No library is required when using these functinons.
+//
+//===----------------------------------------------------------------------===//
 
 // TODO: This file sucks.  Not only does it not work, but this stuff should be
 // autoconfiscated anyways. Major FIXME
@@ -6,11 +19,6 @@
 #ifndef LLVM_SUPPORT_DATATYPES_H
 #define LLVM_SUPPORT_DATATYPES_H
 
-// Should define the following:
-//   LITTLE_ENDIAN if applicable
-//   int64_t 
-//   uint64_t
-
 #ifdef LINUX
 #include <stdint.h>       // Defined by ISO C 99
 #include <endian.h>
diff --git a/include/llvm/Support/NonCopyable.h b/include/llvm/Support/NonCopyable.h
new file mode 100644 (file)
index 0000000..f4fc268
--- /dev/null
@@ -0,0 +1,37 @@
+//===-- NonCopyable.h - Disable copy ctor and op= in subclasses --*- C++ -*--=//
+//
+// This file defines the NonCopyable and NonCopyableV classes.  These mixin
+// classes may be used to mark a class not being copyable.  You should derive
+// from NonCopyable if you don't want to have a virtual dtor, or NonCopyableV
+// if you do want polymorphic behavior in your class.
+//
+// No library is required when using these functinons.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_SUPPORT_NONCOPYABLE_H
+#define LLVM_SUPPORT_NONCOPYABLE_H
+
+class NonCopyable {
+  // Disable the copy constructor and the assignment operator
+  // by making them both private:
+  // 
+  NonCopyable(const NonCopyable &);            // DO NOT IMPLEMENT
+  NonCopyable &operator=(const NonCopyable &); // DO NOT IMPLEMENT
+protected:
+  inline NonCopyable() {}
+  inline ~NonCopyable() {}
+};
+
+class NonCopyableV {
+  // Disable the copy constructor and the assignment operator
+  // by making them both private:
+  // 
+  NonCopyableV(const NonCopyableV &);            // DO NOT IMPLEMENT
+  NonCopyableV &operator=(const NonCopyableV &); // DO NOT IMPLEMENT
+protected:
+  inline NonCopyableV() {}
+  virtual ~NonCopyableV() {}
+};
+
+#endif
diff --git a/include/llvm/Support/Unique.h b/include/llvm/Support/Unique.h
deleted file mode 100644 (file)
index 2219553..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-//************************************************************-*- C++ -*-
-// class Unique:
-//     Mixin class for classes that should never be copied.
-// 
-// Purpose:
-//     This mixin disables both the copy constructor and the
-//     assignment operator.  It also provides a default equality operator.
-// 
-// History:
-//     09/24/96 - vadve - Created (adapted from dHPF).
-//
-//***************************************************************************
-
-#ifndef UNIQUE_H
-#define UNIQUE_H
-
-#include <assert.h>
-
-
-class Unique
-{
-protected:
-  /*ctor*/     Unique          () {}
-  /*dtor*/ virtual ~Unique     () {}
-  
-public:
-  virtual bool operator==      (const Unique& u1) const;
-  virtual bool operator!=      (const Unique& u1) const;
-
-private:
-  // 
-  // Disable the copy constructor and the assignment operator
-  // by making them both private:
-  // 
-  /*ctor*/     Unique          (Unique&)               { assert(0); }
-  virtual Unique& operator=    (const Unique& u1)      { assert(0);
-                                                           return *this; }
-};
-
-
-// Unique object equality.
-inline bool
-Unique::operator==(const Unique& u2) const
-{
-    return (bool) (this == &u2);
-}
-
-
-// Unique object inequality.
-inline bool
-Unique::operator!=(const Unique& u2) const
-{
-    return (bool) !(this == &u2);
-}
-
-#endif
index a1afedea085e50c58848d0d7d8d405c322b4989f..ed271a310085aee1a59c2b3e965381da3cdbfd37 100644 (file)
@@ -50,10 +50,6 @@ InstrTreeNode::InstrTreeNode(InstrTreeNodeType nodeType,
   basicNode.treeNodePtr = this;
 }
 
-InstrTreeNode::~InstrTreeNode()
-{}
-
-
 void
 InstrTreeNode::dump(int dumpChildren,
                    int indent) const
index d48f2d4e357d98c39b34bb9d2cdecdd104bfcb4a..c43b022bb1d7cd08926dd4e60d8f840b66b71f0d 100644 (file)
@@ -45,10 +45,6 @@ MachineInstr::MachineInstr(MachineOpCode _opCode,
 {
 }
 
-MachineInstr::~MachineInstr()
-{
-}
-
 void
 MachineInstr::SetMachineOperand(unsigned int i,
                                MachineOperand::MachineOperandType operandType,
index a1afedea085e50c58848d0d7d8d405c322b4989f..ed271a310085aee1a59c2b3e965381da3cdbfd37 100644 (file)
@@ -50,10 +50,6 @@ InstrTreeNode::InstrTreeNode(InstrTreeNodeType nodeType,
   basicNode.treeNodePtr = this;
 }
 
-InstrTreeNode::~InstrTreeNode()
-{}
-
-
 void
 InstrTreeNode::dump(int dumpChildren,
                    int indent) const