diff options
author | Daniel Dunbar <daniel@zuster.org> | 2009-07-25 23:55:21 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2009-07-25 23:55:21 +0000 |
commit | 03d7651c3652e1f0cc86e79b26585d86818da9cf (patch) | |
tree | b37623b927e150417e2964ee0464745404207d39 | |
parent | 460d51e0c029814cd901a2642bcaa7d776ff5929 (diff) | |
download | external_llvm-03d7651c3652e1f0cc86e79b26585d86818da9cf.zip external_llvm-03d7651c3652e1f0cc86e79b26585d86818da9cf.tar.gz external_llvm-03d7651c3652e1f0cc86e79b26585d86818da9cf.tar.bz2 |
Remove Value::{isName, getNameRef}.
Also, change MDString to use a StringRef.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77098 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | docs/ReleaseNotes-2.6.html | 3 | ||||
-rw-r--r-- | include/llvm/MDNode.h | 14 | ||||
-rw-r--r-- | include/llvm/Value.h | 5 | ||||
-rw-r--r-- | lib/CodeGen/AsmPrinter/AsmPrinter.cpp | 2 | ||||
-rw-r--r-- | lib/Linker/LinkModules.cpp | 4 | ||||
-rw-r--r-- | lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp | 4 | ||||
-rw-r--r-- | lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp | 4 | ||||
-rw-r--r-- | lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp | 4 | ||||
-rw-r--r-- | lib/Transforms/Scalar/SimplifyLibCalls.cpp | 2 | ||||
-rw-r--r-- | lib/Transforms/Utils/InlineCost.cpp | 2 | ||||
-rw-r--r-- | lib/VMCore/AsmWriter.cpp | 41 | ||||
-rw-r--r-- | lib/VMCore/AutoUpgrade.cpp | 18 | ||||
-rw-r--r-- | lib/VMCore/LLVMContextImpl.cpp | 3 | ||||
-rw-r--r-- | lib/VMCore/Value.cpp | 12 | ||||
-rw-r--r-- | lib/VMCore/ValueSymbolTable.cpp | 2 |
15 files changed, 49 insertions, 71 deletions
diff --git a/docs/ReleaseNotes-2.6.html b/docs/ReleaseNotes-2.6.html index add659c..7f287bf 100644 --- a/docs/ReleaseNotes-2.6.html +++ b/docs/ReleaseNotes-2.6.html @@ -484,6 +484,9 @@ clients should be unaffected by this transition, unless they are used to <tt>Val treating the result as an <tt>std::string</tt>, you can either uses <tt>Twine::str</tt> to get the result as an <tt>std::string</tt>, or could move to a <tt>Twine</tt> based design.</li> + + <li><tt>isName()</tt> should be replaced with comparison + against <tt>getName()</tt> (this is now efficient).</tt> </ul> </li> diff --git a/include/llvm/MDNode.h b/include/llvm/MDNode.h index 06cc909..551c2e9 100644 --- a/include/llvm/MDNode.h +++ b/include/llvm/MDNode.h @@ -64,25 +64,25 @@ public: /// class MDString : public MetadataBase { MDString(const MDString &); // DO NOT IMPLEMENT - const char *StrBegin; - unsigned StrLength; + StringRef Str; friend class LLVMContextImpl; protected: explicit MDString(const char *begin, unsigned l) - : MetadataBase(Type::MetadataTy, Value::MDStringVal), - StrBegin(begin), StrLength(l) {} + : MetadataBase(Type::MetadataTy, Value::MDStringVal), Str(begin, l) {} public: - unsigned length() const { return StrLength; } + StringRef getString() const { return Str; } + + unsigned length() const { return Str.size(); } /// begin() - Pointer to the first byte of the string. /// - const char *begin() const { return StrBegin; } + const char *begin() const { return Str.begin(); } /// end() - Pointer to one byte past the end of the string. /// - const char *end() const { return StrBegin + length(); } + const char *end() const { return Str.end(); } /// Methods for support type inquiry through isa, cast, and dyn_cast: static inline bool classof(const MDString *) { return true; } diff --git a/include/llvm/Value.h b/include/llvm/Value.h index 1f5bd7f..584b80e 100644 --- a/include/llvm/Value.h +++ b/include/llvm/Value.h @@ -118,10 +118,6 @@ public: /// getNameEnd - Return a pointer to the end of the name. const char *getNameEnd() const { return getNameStart() + getNameLen(); } - /// isName - Return true if this value has the name specified by the provided - /// nul terminated string. - bool isName(const char *N) const; - /// getNameLen - Return the length of the string, correctly handling nul /// characters embedded into them. unsigned getNameLen() const; @@ -131,7 +127,6 @@ public: /// construct a string, they are very expensive and should be avoided. StringRef getName() const { return StringRef(getNameStart(), getNameLen()); } std::string getNameStr() const; - StringRef getNameRef() const; void setName(const Twine &Name); void setName(const char *Name, unsigned NameLen); diff --git a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp index 887c417..582acce 100644 --- a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp +++ b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp @@ -477,7 +477,7 @@ void AsmPrinter::printPICJumpTableEntry(const MachineJumpTableInfo *MJTI, /// special global used by LLVM. If so, emit it and return true, otherwise /// do nothing and return false. bool AsmPrinter::EmitSpecialLLVMGlobal(const GlobalVariable *GV) { - if (GV->isName("llvm.used")) { + if (GV->getName() == "llvm.used") { if (TAI->getUsedDirective() != 0) // No need to emit this at all. EmitLLVMUsedList(GV->getInitializer()); return true; diff --git a/lib/Linker/LinkModules.cpp b/lib/Linker/LinkModules.cpp index 8831d35..15fe222 100644 --- a/lib/Linker/LinkModules.cpp +++ b/lib/Linker/LinkModules.cpp @@ -548,7 +548,7 @@ static bool LinkGlobals(Module *Dest, const Module *Src, // Check to see if may have to link the global with the global, alias or // function. if (SGV->hasName() && !SGV->hasLocalLinkage()) - DGV = cast_or_null<GlobalValue>(DestSymTab.lookup(SGV->getNameRef())); + DGV = cast_or_null<GlobalValue>(DestSymTab.lookup(SGV->getName())); // If we found a global with the same name in the dest module, but it has // internal linkage, we are really not doing any linkage here. @@ -941,7 +941,7 @@ static bool LinkFunctionProtos(Module *Dest, const Module *Src, // Check to see if may have to link the function with the global, alias or // function. if (SF->hasName() && !SF->hasLocalLinkage()) - DGV = cast_or_null<GlobalValue>(DestSymTab.lookup(SF->getNameRef())); + DGV = cast_or_null<GlobalValue>(DestSymTab.lookup(SF->getName())); // If we found a global with the same name in the dest module, but it has // internal linkage, we are really not doing any linkage here. diff --git a/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp b/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp index 3d6fb80..5ee5e6d 100644 --- a/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp +++ b/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp @@ -1104,9 +1104,9 @@ void ARMAsmPrinter::PrintGlobalVariable(const GlobalVariable* GVar) { if (EmitSpecialLLVMGlobal(GVar)) { if (Subtarget->isTargetDarwin() && TM.getRelocationModel() == Reloc::Static) { - if (GVar->isName("llvm.global_ctors")) + if (GVar->getName() == "llvm.global_ctors") O << ".reference .constructors_used\n"; - else if (GVar->isName("llvm.global_dtors")) + else if (GVar->getName() == "llvm.global_dtors") O << ".reference .destructors_used\n"; } return; diff --git a/lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp b/lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp index 146979e..69b67db 100644 --- a/lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp +++ b/lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp @@ -874,9 +874,9 @@ void PPCDarwinAsmPrinter::PrintGlobalVariable(const GlobalVariable *GVar) { // Check to see if this is a special global used by LLVM, if so, emit it. if (EmitSpecialLLVMGlobal(GVar)) { if (TM.getRelocationModel() == Reloc::Static) { - if (GVar->isName("llvm.global_ctors")) + if (GVar->getName() == "llvm.global_ctors") O << ".reference .constructors_used\n"; - else if (GVar->isName("llvm.global_dtors")) + else if (GVar->getName() == "llvm.global_dtors") O << ".reference .destructors_used\n"; } return; diff --git a/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp b/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp index 6e44b9b..16d8482 100644 --- a/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp +++ b/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp @@ -773,9 +773,9 @@ void X86ATTAsmPrinter::PrintGlobalVariable(const GlobalVariable* GVar) { if (EmitSpecialLLVMGlobal(GVar)) { if (Subtarget->isTargetDarwin() && TM.getRelocationModel() == Reloc::Static) { - if (GVar->isName("llvm.global_ctors")) + if (GVar->getName() == "llvm.global_ctors") O << ".reference .constructors_used\n"; - else if (GVar->isName("llvm.global_dtors")) + else if (GVar->getName() == "llvm.global_dtors") O << ".reference .destructors_used\n"; } return; diff --git a/lib/Transforms/Scalar/SimplifyLibCalls.cpp b/lib/Transforms/Scalar/SimplifyLibCalls.cpp index 6f1898a..60895f3 100644 --- a/lib/Transforms/Scalar/SimplifyLibCalls.cpp +++ b/lib/Transforms/Scalar/SimplifyLibCalls.cpp @@ -512,7 +512,7 @@ struct VISIBILITY_HIDDEN ExitOpt : public LibCallOptimization { // Verify the caller is main, and that the result type of main matches the // argument type of exit. - if (!Caller->isName("main") || !Caller->hasExternalLinkage() || + if (Caller->getName() != "main" || !Caller->hasExternalLinkage() || Caller->getReturnType() != CI->getOperand(1)->getType()) return 0; diff --git a/lib/Transforms/Utils/InlineCost.cpp b/lib/Transforms/Utils/InlineCost.cpp index 9cd4702..1a04b96 100644 --- a/lib/Transforms/Utils/InlineCost.cpp +++ b/lib/Transforms/Utils/InlineCost.cpp @@ -125,7 +125,7 @@ void InlineCostAnalyzer::FunctionInfo::analyzeFunction(Function *F) { // probably won't do this in callers. if (Function *F = CS.getCalledFunction()) if (F->isDeclaration() && - (F->isName("setjmp") || F->isName("_setjmp"))) { + (F->getName() == "setjmp" || F->getName() == "_setjmp")) { NeverInline = true; return; } diff --git a/lib/VMCore/AsmWriter.cpp b/lib/VMCore/AsmWriter.cpp index 9b3d2ed..bb117e1 100644 --- a/lib/VMCore/AsmWriter.cpp +++ b/lib/VMCore/AsmWriter.cpp @@ -66,10 +66,9 @@ static const Module *getModuleFromVal(const Value *V) { // PrintEscapedString - Print each character of the specified string, escaping // it if it is not printable or if it is an escape char. -static void PrintEscapedString(const char *Str, unsigned Length, - raw_ostream &Out) { - for (unsigned i = 0; i != Length; ++i) { - unsigned char C = Str[i]; +static void PrintEscapedString(const StringRef &Name, raw_ostream &Out) { + for (unsigned i = 0, e = Name.size(); i != e; ++i) { + unsigned char C = Name[i]; if (isprint(C) && C != '\\' && C != '"') Out << C; else @@ -77,12 +76,6 @@ static void PrintEscapedString(const char *Str, unsigned Length, } } -// PrintEscapedString - Print each character of the specified string, escaping -// it if it is not printable or if it is an escape char. -static void PrintEscapedString(const std::string &Str, raw_ostream &Out) { - PrintEscapedString(Str.c_str(), Str.size(), Out); -} - enum PrefixType { GlobalPrefix, LabelPrefix, @@ -93,9 +86,9 @@ enum PrefixType { /// PrintLLVMName - Turn the specified name into an 'LLVM name', which is either /// prefixed with % (if the string only contains simple characters) or is /// surrounded with ""'s (if it has special chars in it). Print it out. -static void PrintLLVMName(raw_ostream &OS, const char *NameStr, - unsigned NameLen, PrefixType Prefix) { - assert(NameStr && "Cannot get empty name!"); +static void PrintLLVMName(raw_ostream &OS, const StringRef &Name, + PrefixType Prefix) { + assert(Name.data() && "Cannot get empty name!"); switch (Prefix) { default: llvm_unreachable("Bad prefix!"); case NoPrefix: break; @@ -105,10 +98,10 @@ static void PrintLLVMName(raw_ostream &OS, const char *NameStr, } // Scan the name to see if it needs quotes first. - bool NeedsQuotes = isdigit(NameStr[0]); + bool NeedsQuotes = isdigit(Name[0]); if (!NeedsQuotes) { - for (unsigned i = 0; i != NameLen; ++i) { - char C = NameStr[i]; + for (unsigned i = 0, e = Name.size(); i != e; ++i) { + char C = Name[i]; if (!isalnum(C) && C != '-' && C != '.' && C != '_') { NeedsQuotes = true; break; @@ -118,14 +111,14 @@ static void PrintLLVMName(raw_ostream &OS, const char *NameStr, // If we didn't need any quotes, just write out the name in one blast. if (!NeedsQuotes) { - OS.write(NameStr, NameLen); + OS << Name; return; } // Okay, we need quotes. Output the quotes and escape any scary characters as // needed. OS << '"'; - PrintEscapedString(NameStr, NameLen, OS); + PrintEscapedString(Name, OS); OS << '"'; } @@ -133,7 +126,7 @@ static void PrintLLVMName(raw_ostream &OS, const char *NameStr, /// prefixed with % (if the string only contains simple characters) or is /// surrounded with ""'s (if it has special chars in it). Print it out. static void PrintLLVMName(raw_ostream &OS, const Value *V) { - PrintLLVMName(OS, V->getNameStart(), V->getNameLen(), + PrintLLVMName(OS, V->getName(), isa<GlobalValue>(V) ? GlobalPrefix : LocalPrefix); } @@ -433,7 +426,7 @@ static void AddModuleTypesToPrinter(TypePrinting &TP, // Get the name as a string and insert it into TypeNames. std::string NameStr; raw_string_ostream NameOS(NameStr); - PrintLLVMName(NameOS, TI->first.c_str(), TI->first.length(), LocalPrefix); + PrintLLVMName(NameOS, TI->first, LocalPrefix); TP.addTypeName(Ty, NameOS.str()); } @@ -1138,7 +1131,7 @@ static void WriteAsOperandInternal(raw_ostream &Out, const Value *V, if (const MDString *MDS = dyn_cast<MDString>(V)) { Out << "!\""; - PrintEscapedString(MDS->begin(), MDS->length(), Out); + PrintEscapedString(MDS->getString(), Out); Out << '"'; return; } @@ -1474,7 +1467,7 @@ void AssemblyWriter::printTypeSymbolTable(const TypeSymbolTable &ST) { for (TypeSymbolTable::const_iterator TI = ST.begin(), TE = ST.end(); TI != TE; ++TI) { Out << '\t'; - PrintLLVMName(Out, &TI->first[0], TI->first.size(), LocalPrefix); + PrintLLVMName(Out, TI->first, LocalPrefix); Out << " = type "; // Make sure we print out at least one level of the type structure, so @@ -1605,7 +1598,7 @@ void AssemblyWriter::printArgument(const Argument *Arg, void AssemblyWriter::printBasicBlock(const BasicBlock *BB) { if (BB->hasName()) { // Print out the label if it exists... Out << "\n"; - PrintLLVMName(Out, BB->getNameStart(), BB->getNameLen(), LabelPrefix); + PrintLLVMName(Out, BB->getName(), LabelPrefix); Out << ':'; } else if (!BB->use_empty()) { // Don't print block # of no uses... Out << "\n; <label>:"; @@ -1982,7 +1975,7 @@ void Value::print(raw_ostream &OS, AssemblyAnnotationWriter *AAW) const { TypePrinter.print(MDS->getType(), OS); OS << ' '; OS << "!\""; - PrintEscapedString(MDS->begin(), MDS->length(), OS); + PrintEscapedString(MDS->getString(), OS); OS << '"'; } else if (const MDNode *N = dyn_cast<MDNode>(this)) { SlotTracker SlotTable(N); diff --git a/lib/VMCore/AutoUpgrade.cpp b/lib/VMCore/AutoUpgrade.cpp index ca2e57d..c771500 100644 --- a/lib/VMCore/AutoUpgrade.cpp +++ b/lib/VMCore/AutoUpgrade.cpp @@ -241,23 +241,23 @@ void llvm::UpgradeIntrinsicCall(CallInst *CI, Function *NewFn) { bool isMovSD = false, isShufPD = false; bool isUnpckhPD = false, isUnpcklPD = false; bool isPunpckhQPD = false, isPunpcklQPD = false; - if (strcmp(F->getNameStart(), "llvm.x86.sse2.loadh.pd") == 0) + if (F->getName() == "llvm.x86.sse2.loadh.pd") isLoadH = true; - else if (strcmp(F->getNameStart(), "llvm.x86.sse2.loadl.pd") == 0) + else if (F->getName() == "llvm.x86.sse2.loadl.pd") isLoadL = true; - else if (strcmp(F->getNameStart(), "llvm.x86.sse2.movl.dq") == 0) + else if (F->getName() == "llvm.x86.sse2.movl.dq") isMovL = true; - else if (strcmp(F->getNameStart(), "llvm.x86.sse2.movs.d") == 0) + else if (F->getName() == "llvm.x86.sse2.movs.d") isMovSD = true; - else if (strcmp(F->getNameStart(), "llvm.x86.sse2.shuf.pd") == 0) + else if (F->getName() == "llvm.x86.sse2.shuf.pd") isShufPD = true; - else if (strcmp(F->getNameStart(), "llvm.x86.sse2.unpckh.pd") == 0) + else if (F->getName() == "llvm.x86.sse2.unpckh.pd") isUnpckhPD = true; - else if (strcmp(F->getNameStart(), "llvm.x86.sse2.unpckl.pd") == 0) + else if (F->getName() == "llvm.x86.sse2.unpckl.pd") isUnpcklPD = true; - else if (strcmp(F->getNameStart(), "llvm.x86.sse2.punpckh.qdq") == 0) + else if (F->getName() == "llvm.x86.sse2.punpckh.qdq") isPunpckhQPD = true; - else if (strcmp(F->getNameStart(), "llvm.x86.sse2.punpckl.qdq") == 0) + else if (F->getName() == "llvm.x86.sse2.punpckl.qdq") isPunpcklQPD = true; if (isLoadH || isLoadL || isMovL || isMovSD || isShufPD || diff --git a/lib/VMCore/LLVMContextImpl.cpp b/lib/VMCore/LLVMContextImpl.cpp index 8e6c777..edd76fc 100644 --- a/lib/VMCore/LLVMContextImpl.cpp +++ b/lib/VMCore/LLVMContextImpl.cpp @@ -188,8 +188,7 @@ Constant *LLVMContextImpl::getConstantVector(const VectorType *Ty, void LLVMContextImpl::erase(MDString *M) { sys::SmartScopedWriter<true> Writer(ConstantsLock); - MDStringCache.erase(MDStringCache.find(StringRef(M->StrBegin, - M->length()))); + MDStringCache.erase(MDStringCache.find(M->getString())); } void LLVMContextImpl::erase(MDNode *M) { diff --git a/lib/VMCore/Value.cpp b/lib/VMCore/Value.cpp index d020c39..9d6af5a 100644 --- a/lib/VMCore/Value.cpp +++ b/lib/VMCore/Value.cpp @@ -165,13 +165,6 @@ unsigned Value::getNameLen() const { return Name ? Name->getKeyLength() : 0; } -/// isName - Return true if this value has the name specified by the provided -/// nul terminated string. -bool Value::isName(const char *N) const { - unsigned InLen = strlen(N); - return InLen == getNameLen() && memcmp(getNameStart(), N, InLen) == 0; -} - std::string Value::getNameStr() const { if (Name == 0) return ""; @@ -179,11 +172,6 @@ std::string Value::getNameStr() const { Name->getKeyData()+Name->getKeyLength()); } -StringRef Value::getNameRef() const { - if (Name == 0) return StringRef(); - return StringRef(Name->getKeyData(), Name->getKeyLength()); -} - void Value::setName(const Twine &Name) { SmallString<32> NameData; Name.toVector(NameData); diff --git a/lib/VMCore/ValueSymbolTable.cpp b/lib/VMCore/ValueSymbolTable.cpp index eae3bf2..525f3f0 100644 --- a/lib/VMCore/ValueSymbolTable.cpp +++ b/lib/VMCore/ValueSymbolTable.cpp @@ -43,7 +43,7 @@ void ValueSymbolTable::reinsertValue(Value* V) { } // Otherwise, there is a naming conflict. Rename this value. - SmallString<128> UniqueName(V->getNameStart(), V->getNameEnd()); + SmallString<128> UniqueName(V->getName().begin(), V->getName().end()); // The name is too already used, just free it so we can allocate a new name. V->Name->Destroy(); |