Change casts from old style to new style. This helps document the details

better, gives the compiler a chance to validate the cast and reduces warnings
if the user turns on -Wold-style-cast option.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41033 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Reid Spencer 2007-08-12 08:12:35 +00:00
parent 98147a306e
commit 276222a5ae
11 changed files with 36 additions and 32 deletions

View File

@ -32,11 +32,11 @@ struct DenseMapKeyInfo {
// Provide DenseMapKeyInfo for all pointers. // Provide DenseMapKeyInfo for all pointers.
template<typename T> template<typename T>
struct DenseMapKeyInfo<T*> { struct DenseMapKeyInfo<T*> {
static inline T* getEmptyKey() { return (T*)-1; } static inline T* getEmptyKey() { return reinterpret_cast<T*>(-1); }
static inline T* getTombstoneKey() { return (T*)-2; } static inline T* getTombstoneKey() { return reinterpret_cast<T*>(-2); }
static unsigned getHashValue(const T *PtrVal) { static unsigned getHashValue(const T *PtrVal) {
return (unsigned)((uintptr_t)PtrVal >> 4) ^ return (unsigned(uintptr_t(PtrVal)) >> 4) ^
(unsigned)((uintptr_t)PtrVal >> 9); (unsigned(uintptr_t(PtrVal)) >> 9);
} }
static bool isPod() { return true; } static bool isPod() { return true; }
}; };
@ -69,7 +69,7 @@ public:
P->second.~ValueT(); P->second.~ValueT();
P->first.~KeyT(); P->first.~KeyT();
} }
delete[] (char*)Buckets; delete[] reinterpret_cast<char*>(Buckets);
} }
typedef DenseMapIterator<KeyT, ValueT, KeyInfoT> iterator; typedef DenseMapIterator<KeyT, ValueT, KeyInfoT> iterator;
@ -258,7 +258,7 @@ private:
NumBuckets = InitBuckets; NumBuckets = InitBuckets;
assert(InitBuckets && (InitBuckets & InitBuckets-1) == 0 && assert(InitBuckets && (InitBuckets & InitBuckets-1) == 0 &&
"# initial buckets must be a power of two!"); "# initial buckets must be a power of two!");
Buckets = (BucketT*)new char[sizeof(BucketT)*InitBuckets]; Buckets = reinterpret_cast<BucketT*>(new char[sizeof(BucketT)*InitBuckets]);
// Initialize all the keys to EmptyKey. // Initialize all the keys to EmptyKey.
const KeyT EmptyKey = getEmptyKey(); const KeyT EmptyKey = getEmptyKey();
for (unsigned i = 0; i != InitBuckets; ++i) for (unsigned i = 0; i != InitBuckets; ++i)
@ -272,7 +272,7 @@ private:
// Double the number of buckets. // Double the number of buckets.
NumBuckets <<= 1; NumBuckets <<= 1;
NumTombstones = 0; NumTombstones = 0;
Buckets = (BucketT*)new char[sizeof(BucketT)*NumBuckets]; Buckets = reinterpret_cast<BucketT*>(new char[sizeof(BucketT)*NumBuckets]);
// Initialize all the keys to EmptyKey. // Initialize all the keys to EmptyKey.
const KeyT EmptyKey = getEmptyKey(); const KeyT EmptyKey = getEmptyKey();
@ -298,7 +298,7 @@ private:
} }
// Free the old table. // Free the old table.
delete[] (char*)OldBuckets; delete[] reinterpret_cast<char*>(OldBuckets);
} }
void shrink_and_clear() { void shrink_and_clear() {
@ -309,7 +309,7 @@ private:
NumBuckets = NumEntries > 32 ? 1 << (Log2_32_Ceil(NumEntries) + 1) NumBuckets = NumEntries > 32 ? 1 << (Log2_32_Ceil(NumEntries) + 1)
: 64; : 64;
NumTombstones = 0; NumTombstones = 0;
Buckets = (BucketT*)new char[sizeof(BucketT)*NumBuckets]; Buckets = reinterpret_cast<BucketT*>(new char[sizeof(BucketT)*NumBuckets]);
// Initialize all the keys to EmptyKey. // Initialize all the keys to EmptyKey.
const KeyT EmptyKey = getEmptyKey(); const KeyT EmptyKey = getEmptyKey();
@ -327,7 +327,7 @@ private:
} }
// Free the old table. // Free the old table.
delete[] (char*)OldBuckets; delete[] reinterpret_cast<char*>(OldBuckets);
NumEntries = 0; NumEntries = 0;
} }

View File

@ -73,7 +73,9 @@ protected:
public: public:
// Default ctor - Initialize to empty. // Default ctor - Initialize to empty.
SmallVectorImpl(unsigned N) SmallVectorImpl(unsigned N)
: Begin((T*)&FirstEl), End((T*)&FirstEl), Capacity((T*)&FirstEl+N) { : Begin(reinterpret_cast<T*>(&FirstEl)),
End(reinterpret_cast<T*>(&FirstEl)),
Capacity(reinterpret_cast<T*>(&FirstEl)+N) {
} }
~SmallVectorImpl() { ~SmallVectorImpl() {
@ -82,7 +84,7 @@ public:
// If this wasn't grown from the inline copy, deallocate the old space. // If this wasn't grown from the inline copy, deallocate the old space.
if (!isSmall()) if (!isSmall())
delete[] (char*)Begin; delete[] reinterpret_cast<char*>(Begin);
} }
typedef size_t size_type; typedef size_t size_type;
@ -285,7 +287,8 @@ private:
/// isSmall - Return true if this is a smallvector which has not had dynamic /// isSmall - Return true if this is a smallvector which has not had dynamic
/// memory allocated for it. /// memory allocated for it.
bool isSmall() const { bool isSmall() const {
return (void*)Begin == (void*)&FirstEl; return reinterpret_cast<const void*>(Begin) ==
reinterpret_cast<const void*>(&FirstEl);
} }
/// grow - double the size of the allocated memory, guaranteeing space for at /// grow - double the size of the allocated memory, guaranteeing space for at
@ -323,7 +326,7 @@ void SmallVectorImpl<T>::grow(unsigned MinSize) {
// If this wasn't grown from the inline copy, deallocate the old space. // If this wasn't grown from the inline copy, deallocate the old space.
if (!isSmall()) if (!isSmall())
delete[] (char*)Begin; delete[] reinterpret_cast<char*>(Begin);
Begin = NewElts; Begin = NewElts;
End = NewElts+CurSize; End = NewElts+CurSize;

View File

@ -282,7 +282,7 @@ protected:
class DominatorTree : public DominatorTreeBase { class DominatorTree : public DominatorTreeBase {
public: public:
static char ID; // Pass ID, replacement for typeid static char ID; // Pass ID, replacement for typeid
DominatorTree() : DominatorTreeBase((intptr_t)&ID, false) {} DominatorTree() : DominatorTreeBase(intptr_t(&ID), false) {}
BasicBlock *getRoot() const { BasicBlock *getRoot() const {
assert(Roots.size() == 1 && "Should always have entry node!"); assert(Roots.size() == 1 && "Should always have entry node!");
@ -399,7 +399,7 @@ class DominanceFrontier : public DominanceFrontierBase {
public: public:
static char ID; // Pass ID, replacement for typeid static char ID; // Pass ID, replacement for typeid
DominanceFrontier() : DominanceFrontier() :
DominanceFrontierBase((intptr_t)& ID, false) {} DominanceFrontierBase(intptr_t(&ID), false) {}
BasicBlock *getRoot() const { BasicBlock *getRoot() const {
assert(Roots.size() == 1 && "Should always have entry node!"); assert(Roots.size() == 1 && "Should always have entry node!");

View File

@ -246,7 +246,7 @@ class LoopInfo : public FunctionPass {
public: public:
static char ID; // Pass identification, replacement for typeid static char ID; // Pass identification, replacement for typeid
LoopInfo() : FunctionPass((intptr_t)&ID) {} LoopInfo() : FunctionPass(intptr_t(&ID)) {}
~LoopInfo() { releaseMemory(); } ~LoopInfo() { releaseMemory(); }
/// iterator/begin/end - The interface to the top-level loops in the current /// iterator/begin/end - The interface to the top-level loops in the current

View File

@ -29,9 +29,10 @@ class PrintModulePass : public ModulePass {
bool DeleteStream; // Delete the ostream in our dtor? bool DeleteStream; // Delete the ostream in our dtor?
public: public:
static char ID; static char ID;
PrintModulePass() : ModulePass((intptr_t)&ID), Out(&cerr), DeleteStream(false) {} PrintModulePass() : ModulePass(intptr_t(&ID)), Out(&cerr),
DeleteStream(false) {}
PrintModulePass(OStream *o, bool DS = false) PrintModulePass(OStream *o, bool DS = false)
: ModulePass((intptr_t)&ID), Out(o), DeleteStream(DS) {} : ModulePass(intptr_t(&ID)), Out(o), DeleteStream(DS) {}
~PrintModulePass() { ~PrintModulePass() {
if (DeleteStream) delete Out; if (DeleteStream) delete Out;
@ -53,11 +54,11 @@ class PrintFunctionPass : public FunctionPass {
bool DeleteStream; // Delete the ostream in our dtor? bool DeleteStream; // Delete the ostream in our dtor?
public: public:
static char ID; static char ID;
PrintFunctionPass() : FunctionPass((intptr_t)&ID), Banner(""), Out(&cerr), PrintFunctionPass() : FunctionPass(intptr_t(&ID)), Banner(""), Out(&cerr),
DeleteStream(false) {} DeleteStream(false) {}
PrintFunctionPass(const std::string &B, OStream *o = &cout, PrintFunctionPass(const std::string &B, OStream *o = &cout,
bool DS = false) bool DS = false)
: FunctionPass((intptr_t)&ID), Banner(B), Out(o), DeleteStream(DS) {} : FunctionPass(intptr_t(&ID)), Banner(B), Out(o), DeleteStream(DS) {}
inline ~PrintFunctionPass() { inline ~PrintFunctionPass() {
if (DeleteStream) delete Out; if (DeleteStream) delete Out;

View File

@ -74,7 +74,7 @@ public:
Alignment = Align; Alignment = Align;
} }
VisibilityTypes getVisibility() const { return (VisibilityTypes)Visibility; } VisibilityTypes getVisibility() const { return VisibilityTypes(Visibility); }
bool hasHiddenVisibility() const { return Visibility == HiddenVisibility; } bool hasHiddenVisibility() const { return Visibility == HiddenVisibility; }
bool hasProtectedVisibility() const { bool hasProtectedVisibility() const {
return Visibility == ProtectedVisibility; return Visibility == ProtectedVisibility;

View File

@ -170,7 +170,7 @@ public:
template<typename AnalysisClass> template<typename AnalysisClass>
static const PassInfo *getClassPassInfo() { static const PassInfo *getClassPassInfo() {
return lookupPassInfo((intptr_t)&AnalysisClass::ID); return lookupPassInfo(intptr_t(&AnalysisClass::ID));
} }
// lookupPassInfo - Return the pass info object for the specified pass class, // lookupPassInfo - Return the pass info object for the specified pass class,

View File

@ -341,7 +341,7 @@ class FPPassManager : public ModulePass, public PMDataManager {
public: public:
static char ID; static char ID;
explicit FPPassManager(int Depth) explicit FPPassManager(int Depth)
: ModulePass((intptr_t)&ID), PMDataManager(Depth) { } : ModulePass(intptr_t(&ID)), PMDataManager(Depth) { }
/// run - Execute all of the passes scheduled for execution. Keep track of /// run - Execute all of the passes scheduled for execution. Keep track of
/// whether any of the passes modifies the module, and if so, return true. /// whether any of the passes modifies the module, and if so, return true.

View File

@ -165,8 +165,8 @@ struct RegisterPass : public RegisterPassBase {
// Register Pass using default constructor... // Register Pass using default constructor...
RegisterPass(const char *PassArg, const char *Name, bool CFGOnly = false) RegisterPass(const char *PassArg, const char *Name, bool CFGOnly = false)
: RegisterPassBase(Name, PassArg, (intptr_t)&PassName::ID, : RegisterPassBase(Name, PassArg, intptr_t(&PassName::ID),
(RegisterPassBase::NormalCtor_t)callDefaultCtor<PassName>, CFGOnly) { RegisterPassBase::NormalCtor_t(callDefaultCtor<PassName>), CFGOnly) {
} }
}; };
@ -204,12 +204,12 @@ protected:
template<typename Interface, bool Default = false> template<typename Interface, bool Default = false>
struct RegisterAnalysisGroup : public RegisterAGBase { struct RegisterAnalysisGroup : public RegisterAGBase {
explicit RegisterAnalysisGroup(RegisterPassBase &RPB) explicit RegisterAnalysisGroup(RegisterPassBase &RPB)
: RegisterAGBase((intptr_t) &Interface::ID, RPB.getPassInfo()->getTypeInfo(), : RegisterAGBase(intptr_t(&Interface::ID), RPB.getPassInfo()->getTypeInfo(),
Default) { Default) {
} }
explicit RegisterAnalysisGroup(const char *Name) explicit RegisterAnalysisGroup(const char *Name)
: RegisterAGBase((intptr_t) &Interface::ID) { : RegisterAGBase(intptr_t(&Interface::ID)) {
setGroupName(Name); setGroupName(Name);
} }
}; };

View File

@ -45,7 +45,7 @@ public:
/// getListOwner - Return the object that owns this list. If this is a list /// getListOwner - Return the object that owns this list. If this is a list
/// of instructions, it returns the BasicBlock that owns them. /// of instructions, it returns the BasicBlock that owns them.
ItemParentClass *getListOwner() { ItemParentClass *getListOwner() {
return reinterpret_cast<ItemParentClass*>((char*)this- return reinterpret_cast<ItemParentClass*>(reinterpret_cast<char*>(this)-
TraitsClass::getListOffset()); TraitsClass::getListOffset());
} }
static ValueSubClass *getPrev(ValueSubClass *V) { return V->getPrev(); } static ValueSubClass *getPrev(ValueSubClass *V) { return V->getPrev(); }

View File

@ -108,7 +108,7 @@ public:
/// ///
/// @note This has to exist, because this is a pass, but it should never be /// @note This has to exist, because this is a pass, but it should never be
/// used. /// used.
TargetData() : ImmutablePass((intptr_t)&ID) { TargetData() : ImmutablePass(intptr_t(&ID)) {
assert(0 && "ERROR: Bad TargetData ctor used. " assert(0 && "ERROR: Bad TargetData ctor used. "
"Tool did not specify a TargetData to use?"); "Tool did not specify a TargetData to use?");
abort(); abort();
@ -116,7 +116,7 @@ public:
/// Constructs a TargetData from a specification string. See init(). /// Constructs a TargetData from a specification string. See init().
explicit TargetData(const std::string &TargetDescription) explicit TargetData(const std::string &TargetDescription)
: ImmutablePass((intptr_t)&ID) { : ImmutablePass(intptr_t(&ID)) {
init(TargetDescription); init(TargetDescription);
} }
@ -124,7 +124,7 @@ public:
explicit TargetData(const Module *M); explicit TargetData(const Module *M);
TargetData(const TargetData &TD) : TargetData(const TargetData &TD) :
ImmutablePass((intptr_t)&ID), ImmutablePass(intptr_t(&ID)),
LittleEndian(TD.isLittleEndian()), LittleEndian(TD.isLittleEndian()),
PointerMemSize(TD.PointerMemSize), PointerMemSize(TD.PointerMemSize),
PointerABIAlign(TD.PointerABIAlign), PointerABIAlign(TD.PointerABIAlign),