From efedd3aa1b8a295606bb5331ad50b2ce30159d16 Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Mon, 10 Feb 2014 21:25:13 +0000 Subject: [PATCH] Mark the methods in the Mangler const. A const ObjectFile needs to be able to provide its name. For an IRObjectFile, that means being able to call the mangler. Since each IRObjectFile can have a different mangling, it is natural for them to contain a Mangler which is therefore also const. llvm-svn: 201113 --- llvm/include/llvm/IR/Mangler.h | 13 +++++++------ llvm/lib/IR/Mangler.cpp | 11 ++++++----- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/llvm/include/llvm/IR/Mangler.h b/llvm/include/llvm/IR/Mangler.h index 9229dd8..07f4fed 100644 --- a/llvm/include/llvm/IR/Mangler.h +++ b/llvm/include/llvm/IR/Mangler.h @@ -39,11 +39,11 @@ private: /// they are mangled. This keeps track of the number we give to anonymous /// ones. /// - DenseMap AnonGlobalIDs; + mutable DenseMap AnonGlobalIDs; /// NextAnonGlobalID - This simple counter is used to unique value names. /// - unsigned NextAnonGlobalID; + mutable unsigned NextAnonGlobalID; public: Mangler(const DataLayout *DL) : DL(DL), NextAnonGlobalID(1) {} @@ -51,15 +51,16 @@ public: /// Print the appropriate prefix and the specified global variable's name. /// If the global variable doesn't have a name, this fills in a unique name /// for the global. - void getNameWithPrefix(raw_ostream &OS, const GlobalValue *GV); - void getNameWithPrefix(SmallVectorImpl &OutName, const GlobalValue *GV); + void getNameWithPrefix(raw_ostream &OS, const GlobalValue *GV) const; + void getNameWithPrefix(SmallVectorImpl &OutName, + const GlobalValue *GV) const; /// Print the appropriate prefix and the specified name as the global variable /// name. GVName must not be empty. void getNameWithPrefix(raw_ostream &OS, const Twine &GVName, - ManglerPrefixTy PrefixTy = Mangler::Default); + ManglerPrefixTy PrefixTy = Mangler::Default) const; void getNameWithPrefix(SmallVectorImpl &OutName, const Twine &GVName, - ManglerPrefixTy PrefixTy = Mangler::Default); + ManglerPrefixTy PrefixTy = Mangler::Default) const; }; } // End llvm namespace diff --git a/llvm/lib/IR/Mangler.cpp b/llvm/lib/IR/Mangler.cpp index bc1362d..9c18e6f 100644 --- a/llvm/lib/IR/Mangler.cpp +++ b/llvm/lib/IR/Mangler.cpp @@ -44,13 +44,14 @@ static void getNameWithPrefixx(raw_ostream &OS, const Twine &GVName, OS << Name; } -void Mangler::getNameWithPrefix(raw_ostream &OS, - const Twine &GVName, ManglerPrefixTy PrefixTy) { +void Mangler::getNameWithPrefix(raw_ostream &OS, const Twine &GVName, + ManglerPrefixTy PrefixTy) const { return getNameWithPrefixx(OS, GVName, PrefixTy, *DL, false); } void Mangler::getNameWithPrefix(SmallVectorImpl &OutName, - const Twine &GVName, ManglerPrefixTy PrefixTy) { + const Twine &GVName, + ManglerPrefixTy PrefixTy) const { raw_svector_ostream OS(OutName); return getNameWithPrefix(OS, GVName, PrefixTy); } @@ -75,7 +76,7 @@ static void AddFastCallStdCallSuffix(raw_ostream &OS, const Function *F, OS << '@' << ArgWords; } -void Mangler::getNameWithPrefix(raw_ostream &OS, const GlobalValue *GV) { +void Mangler::getNameWithPrefix(raw_ostream &OS, const GlobalValue *GV) const { ManglerPrefixTy PrefixTy = Mangler::Default; if (GV->hasPrivateLinkage()) PrefixTy = Mangler::Private; @@ -133,7 +134,7 @@ void Mangler::getNameWithPrefix(raw_ostream &OS, const GlobalValue *GV) { } void Mangler::getNameWithPrefix(SmallVectorImpl &OutName, - const GlobalValue *GV) { + const GlobalValue *GV) const { raw_svector_ostream OS(OutName); getNameWithPrefix(OS, GV); } -- 2.7.4