From d6391d7d3bceabda56d528c4b51400d089a02337 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Thu, 8 Jul 2004 22:09:34 +0000 Subject: [PATCH] Do not call Type::getUniqueID git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14706 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Support/Mangler.cpp | 16 ++++++++++++---- lib/VMCore/Mangler.cpp | 16 ++++++++++++---- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/lib/Support/Mangler.cpp b/lib/Support/Mangler.cpp index 4b346871166..bf989b41ce8 100644 --- a/lib/Support/Mangler.cpp +++ b/lib/Support/Mangler.cpp @@ -46,6 +46,15 @@ std::string Mangler::makeNameProper(const std::string &X) { return Result; } +/// getTypeID - Return a unique ID for the specified LLVM type. +/// +unsigned Mangler::getTypeID(const Type *Ty) { + unsigned &E = TypeMap[Ty]; + if (E == 0) E = ++TypeCounter; + return E; +} + + std::string Mangler::getValueName(const Value *V) { // Check to see whether we've already named V. ValueMap::iterator VI = Memo.find(V); @@ -71,12 +80,11 @@ std::string Mangler::getValueName(const Value *V) { } else { // Non-global, or global with internal linkage / colliding name // -> mangle. - unsigned TypeUniqueID = V->getType()->getUniqueID(); + unsigned TypeUniqueID = getTypeID(V->getType()); name = "l" + utostr(TypeUniqueID) + "_" + makeNameProper(V->getName()); } } else { - name = "ltmp_" + utostr(Count++) + "_" - + utostr(V->getType()->getUniqueID()); + name = "ltmp_" + utostr(Count++) + "_" + utostr(getTypeID(V->getType())); } Memo[V] = name; @@ -108,7 +116,7 @@ void Mangler::InsertName(GlobalValue *GV, Mangler::Mangler(Module &m, bool addUnderscorePrefix) - : M(m), AddUnderscorePrefix(addUnderscorePrefix), Count(0) { + : M(m), AddUnderscorePrefix(addUnderscorePrefix), TypeCounter(0), Count(0) { // Calculate which global values have names that will collide when we throw // away type information. std::map Names; diff --git a/lib/VMCore/Mangler.cpp b/lib/VMCore/Mangler.cpp index 4b346871166..bf989b41ce8 100644 --- a/lib/VMCore/Mangler.cpp +++ b/lib/VMCore/Mangler.cpp @@ -46,6 +46,15 @@ std::string Mangler::makeNameProper(const std::string &X) { return Result; } +/// getTypeID - Return a unique ID for the specified LLVM type. +/// +unsigned Mangler::getTypeID(const Type *Ty) { + unsigned &E = TypeMap[Ty]; + if (E == 0) E = ++TypeCounter; + return E; +} + + std::string Mangler::getValueName(const Value *V) { // Check to see whether we've already named V. ValueMap::iterator VI = Memo.find(V); @@ -71,12 +80,11 @@ std::string Mangler::getValueName(const Value *V) { } else { // Non-global, or global with internal linkage / colliding name // -> mangle. - unsigned TypeUniqueID = V->getType()->getUniqueID(); + unsigned TypeUniqueID = getTypeID(V->getType()); name = "l" + utostr(TypeUniqueID) + "_" + makeNameProper(V->getName()); } } else { - name = "ltmp_" + utostr(Count++) + "_" - + utostr(V->getType()->getUniqueID()); + name = "ltmp_" + utostr(Count++) + "_" + utostr(getTypeID(V->getType())); } Memo[V] = name; @@ -108,7 +116,7 @@ void Mangler::InsertName(GlobalValue *GV, Mangler::Mangler(Module &m, bool addUnderscorePrefix) - : M(m), AddUnderscorePrefix(addUnderscorePrefix), Count(0) { + : M(m), AddUnderscorePrefix(addUnderscorePrefix), TypeCounter(0), Count(0) { // Calculate which global values have names that will collide when we throw // away type information. std::map Names;