Mangler.cpp: Constify parameter to makeNameProper, and use const_iterator.
Make Count an unsigned int, and use utostr().
Don't name parameters things that start with underscore.
Mangler.h: All of the above, and also: Add Emacs mode-line. Include <set>.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7301
91177308-0d34-0410-b5e6-
96231b3b80d8
-//===-- Mangler.h - Self-contained c/asm llvm name mangler ----------------===//
+//===-- Mangler.h - Self-contained c/asm llvm name mangler -*- C++ -*- ----===//
//
// Unified name mangler for CWriter and assembly backends.
//
class Value;
#include <map>
+#include <set>
class Mangler {
public:
///
std::string getValueName(const Value *V);
- Mangler(Module &_M);
+ Mangler(Module &M_);
/// makeNameProper - We don't want identifier names with ., space, or
/// - in them, so we mangle these characters into the strings "d_",
/// does this for you, so there's no point calling it on the result
/// from getValueName.
///
- static std::string makeNameProper(std::string x);
+ static std::string makeNameProper(const std::string &x);
private:
/// This keeps track of which global values have had their names
typedef std::map<const Value *, std::string> ValueMap;
ValueMap Memo;
- long long Count;
+ unsigned int Count;
};
#endif // LLVM_SUPPORT_MANGLER_H
/// - in them, so we mangle these characters into the strings "d_",
/// "s_", and "D_", respectively.
///
-std::string Mangler::makeNameProper(std::string x) {
+std::string Mangler::makeNameProper(const std::string &x) {
std::string tmp;
- for (std::string::iterator sI = x.begin(), sEnd = x.end(); sI != sEnd; sI++)
+ for (std::string::const_iterator sI = x.begin(), sEnd = x.end();
+ sI != sEnd; sI++)
switch (*sI) {
case '.': tmp += "d_"; break;
case ' ': tmp += "s_"; break;
makeNameProper(V->getName());
}
} else {
- name = "ltmp_" + itostr(Count++) + "_"
+ name = "ltmp_" + utostr(Count++) + "_"
+ utostr(V->getType()->getUniqueID());
}
Memo[V] = name;
return name;
}
-Mangler::Mangler(Module &_M) : M(_M)
+Mangler::Mangler(Module &M_) : M(M_)
{
// Calculate which global values have names that will collide when we throw
// away type information.
/// - in them, so we mangle these characters into the strings "d_",
/// "s_", and "D_", respectively.
///
-std::string Mangler::makeNameProper(std::string x) {
+std::string Mangler::makeNameProper(const std::string &x) {
std::string tmp;
- for (std::string::iterator sI = x.begin(), sEnd = x.end(); sI != sEnd; sI++)
+ for (std::string::const_iterator sI = x.begin(), sEnd = x.end();
+ sI != sEnd; sI++)
switch (*sI) {
case '.': tmp += "d_"; break;
case ' ': tmp += "s_"; break;
makeNameProper(V->getName());
}
} else {
- name = "ltmp_" + itostr(Count++) + "_"
+ name = "ltmp_" + utostr(Count++) + "_"
+ utostr(V->getType()->getUniqueID());
}
Memo[V] = name;
return name;
}
-Mangler::Mangler(Module &_M) : M(_M)
+Mangler::Mangler(Module &M_) : M(M_)
{
// Calculate which global values have names that will collide when we throw
// away type information.
/// - in them, so we mangle these characters into the strings "d_",
/// "s_", and "D_", respectively.
///
-std::string Mangler::makeNameProper(std::string x) {
+std::string Mangler::makeNameProper(const std::string &x) {
std::string tmp;
- for (std::string::iterator sI = x.begin(), sEnd = x.end(); sI != sEnd; sI++)
+ for (std::string::const_iterator sI = x.begin(), sEnd = x.end();
+ sI != sEnd; sI++)
switch (*sI) {
case '.': tmp += "d_"; break;
case ' ': tmp += "s_"; break;
makeNameProper(V->getName());
}
} else {
- name = "ltmp_" + itostr(Count++) + "_"
+ name = "ltmp_" + utostr(Count++) + "_"
+ utostr(V->getType()->getUniqueID());
}
Memo[V] = name;
return name;
}
-Mangler::Mangler(Module &_M) : M(_M)
+Mangler::Mangler(Module &M_) : M(M_)
{
// Calculate which global values have names that will collide when we throw
// away type information.