forked from OSchip/llvm-project
				
			Remove Value::{isName, getNameRef}.
Also, change MDString to use a StringRef. llvm-svn: 77098
This commit is contained in:
		
							parent
							
								
									ea086c7263
								
							
						
					
					
						commit
						e03eecb75f
					
				| 
						 | 
					@ -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
 | 
					      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
 | 
					      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>
 | 
					      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>
 | 
					  </ul>
 | 
				
			||||||
</li>
 | 
					</li>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -64,25 +64,25 @@ public:
 | 
				
			||||||
///
 | 
					///
 | 
				
			||||||
class MDString : public MetadataBase {
 | 
					class MDString : public MetadataBase {
 | 
				
			||||||
  MDString(const MDString &);            // DO NOT IMPLEMENT
 | 
					  MDString(const MDString &);            // DO NOT IMPLEMENT
 | 
				
			||||||
  const char *StrBegin;
 | 
					  StringRef Str;
 | 
				
			||||||
  unsigned StrLength;
 | 
					 | 
				
			||||||
  friend class LLVMContextImpl;
 | 
					  friend class LLVMContextImpl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
protected:
 | 
					protected:
 | 
				
			||||||
  explicit MDString(const char *begin, unsigned l)
 | 
					  explicit MDString(const char *begin, unsigned l)
 | 
				
			||||||
    : MetadataBase(Type::MetadataTy, Value::MDStringVal),
 | 
					    : MetadataBase(Type::MetadataTy, Value::MDStringVal), Str(begin, l) {}
 | 
				
			||||||
      StrBegin(begin), StrLength(l) {}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
public:
 | 
					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.
 | 
					  /// 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.
 | 
					  /// 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:
 | 
					  /// Methods for support type inquiry through isa, cast, and dyn_cast:
 | 
				
			||||||
  static inline bool classof(const MDString *) { return true; }
 | 
					  static inline bool classof(const MDString *) { return true; }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -118,10 +118,6 @@ public:
 | 
				
			||||||
  /// getNameEnd - Return a pointer to the end of the name.
 | 
					  /// getNameEnd - Return a pointer to the end of the name.
 | 
				
			||||||
  const char *getNameEnd() const { return getNameStart() + getNameLen(); }
 | 
					  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
 | 
					  /// getNameLen - Return the length of the string, correctly handling nul
 | 
				
			||||||
  /// characters embedded into them.
 | 
					  /// characters embedded into them.
 | 
				
			||||||
  unsigned getNameLen() const;
 | 
					  unsigned getNameLen() const;
 | 
				
			||||||
| 
						 | 
					@ -131,7 +127,6 @@ public:
 | 
				
			||||||
  /// construct a string, they are very expensive and should be avoided.
 | 
					  /// construct a string, they are very expensive and should be avoided.
 | 
				
			||||||
  StringRef getName() const { return StringRef(getNameStart(), getNameLen()); }
 | 
					  StringRef getName() const { return StringRef(getNameStart(), getNameLen()); }
 | 
				
			||||||
  std::string getNameStr() const;
 | 
					  std::string getNameStr() const;
 | 
				
			||||||
  StringRef getNameRef() const;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  void setName(const Twine &Name);
 | 
					  void setName(const Twine &Name);
 | 
				
			||||||
  void setName(const char *Name, unsigned NameLen);
 | 
					  void setName(const char *Name, unsigned NameLen);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -477,7 +477,7 @@ void AsmPrinter::printPICJumpTableEntry(const MachineJumpTableInfo *MJTI,
 | 
				
			||||||
/// special global used by LLVM.  If so, emit it and return true, otherwise
 | 
					/// special global used by LLVM.  If so, emit it and return true, otherwise
 | 
				
			||||||
/// do nothing and return false.
 | 
					/// do nothing and return false.
 | 
				
			||||||
bool AsmPrinter::EmitSpecialLLVMGlobal(const GlobalVariable *GV) {
 | 
					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.
 | 
					    if (TAI->getUsedDirective() != 0)    // No need to emit this at all.
 | 
				
			||||||
      EmitLLVMUsedList(GV->getInitializer());
 | 
					      EmitLLVMUsedList(GV->getInitializer());
 | 
				
			||||||
    return true;
 | 
					    return true;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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
 | 
					    // Check to see if may have to link the global with the global, alias or
 | 
				
			||||||
    // function.
 | 
					    // function.
 | 
				
			||||||
    if (SGV->hasName() && !SGV->hasLocalLinkage())
 | 
					    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
 | 
					    // 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.
 | 
					    // 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
 | 
					    // Check to see if may have to link the function with the global, alias or
 | 
				
			||||||
    // function.
 | 
					    // function.
 | 
				
			||||||
    if (SF->hasName() && !SF->hasLocalLinkage())
 | 
					    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
 | 
					    // 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.
 | 
					    // internal linkage, we are really not doing any linkage here.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1104,9 +1104,9 @@ void ARMAsmPrinter::PrintGlobalVariable(const GlobalVariable* GVar) {
 | 
				
			||||||
  if (EmitSpecialLLVMGlobal(GVar)) {
 | 
					  if (EmitSpecialLLVMGlobal(GVar)) {
 | 
				
			||||||
    if (Subtarget->isTargetDarwin() &&
 | 
					    if (Subtarget->isTargetDarwin() &&
 | 
				
			||||||
        TM.getRelocationModel() == Reloc::Static) {
 | 
					        TM.getRelocationModel() == Reloc::Static) {
 | 
				
			||||||
      if (GVar->isName("llvm.global_ctors"))
 | 
					      if (GVar->getName() == "llvm.global_ctors")
 | 
				
			||||||
        O << ".reference .constructors_used\n";
 | 
					        O << ".reference .constructors_used\n";
 | 
				
			||||||
      else if (GVar->isName("llvm.global_dtors"))
 | 
					      else if (GVar->getName() == "llvm.global_dtors")
 | 
				
			||||||
        O << ".reference .destructors_used\n";
 | 
					        O << ".reference .destructors_used\n";
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    return;
 | 
					    return;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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.
 | 
					  // Check to see if this is a special global used by LLVM, if so, emit it.
 | 
				
			||||||
  if (EmitSpecialLLVMGlobal(GVar)) {
 | 
					  if (EmitSpecialLLVMGlobal(GVar)) {
 | 
				
			||||||
    if (TM.getRelocationModel() == Reloc::Static) {
 | 
					    if (TM.getRelocationModel() == Reloc::Static) {
 | 
				
			||||||
      if (GVar->isName("llvm.global_ctors"))
 | 
					      if (GVar->getName() == "llvm.global_ctors")
 | 
				
			||||||
        O << ".reference .constructors_used\n";
 | 
					        O << ".reference .constructors_used\n";
 | 
				
			||||||
      else if (GVar->isName("llvm.global_dtors"))
 | 
					      else if (GVar->getName() == "llvm.global_dtors")
 | 
				
			||||||
        O << ".reference .destructors_used\n";
 | 
					        O << ".reference .destructors_used\n";
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    return;
 | 
					    return;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -773,9 +773,9 @@ void X86ATTAsmPrinter::PrintGlobalVariable(const GlobalVariable* GVar) {
 | 
				
			||||||
  if (EmitSpecialLLVMGlobal(GVar)) {
 | 
					  if (EmitSpecialLLVMGlobal(GVar)) {
 | 
				
			||||||
    if (Subtarget->isTargetDarwin() &&
 | 
					    if (Subtarget->isTargetDarwin() &&
 | 
				
			||||||
        TM.getRelocationModel() == Reloc::Static) {
 | 
					        TM.getRelocationModel() == Reloc::Static) {
 | 
				
			||||||
      if (GVar->isName("llvm.global_ctors"))
 | 
					      if (GVar->getName() == "llvm.global_ctors")
 | 
				
			||||||
        O << ".reference .constructors_used\n";
 | 
					        O << ".reference .constructors_used\n";
 | 
				
			||||||
      else if (GVar->isName("llvm.global_dtors"))
 | 
					      else if (GVar->getName() == "llvm.global_dtors")
 | 
				
			||||||
        O << ".reference .destructors_used\n";
 | 
					        O << ".reference .destructors_used\n";
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    return;
 | 
					    return;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -512,7 +512,7 @@ struct VISIBILITY_HIDDEN ExitOpt : public LibCallOptimization {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Verify the caller is main, and that the result type of main matches the
 | 
					    // Verify the caller is main, and that the result type of main matches the
 | 
				
			||||||
    // argument type of exit.
 | 
					    // argument type of exit.
 | 
				
			||||||
    if (!Caller->isName("main") || !Caller->hasExternalLinkage() ||
 | 
					    if (Caller->getName() != "main" || !Caller->hasExternalLinkage() ||
 | 
				
			||||||
        Caller->getReturnType() != CI->getOperand(1)->getType())
 | 
					        Caller->getReturnType() != CI->getOperand(1)->getType())
 | 
				
			||||||
      return 0;
 | 
					      return 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -125,7 +125,7 @@ void InlineCostAnalyzer::FunctionInfo::analyzeFunction(Function *F) {
 | 
				
			||||||
        // probably won't do this in callers.
 | 
					        // probably won't do this in callers.
 | 
				
			||||||
        if (Function *F = CS.getCalledFunction())
 | 
					        if (Function *F = CS.getCalledFunction())
 | 
				
			||||||
          if (F->isDeclaration() && 
 | 
					          if (F->isDeclaration() && 
 | 
				
			||||||
              (F->isName("setjmp") || F->isName("_setjmp"))) {
 | 
					              (F->getName() == "setjmp" || F->getName() == "_setjmp")) {
 | 
				
			||||||
            NeverInline = true;
 | 
					            NeverInline = true;
 | 
				
			||||||
            return;
 | 
					            return;
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -66,10 +66,9 @@ static const Module *getModuleFromVal(const Value *V) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// PrintEscapedString - Print each character of the specified string, escaping
 | 
					// PrintEscapedString - Print each character of the specified string, escaping
 | 
				
			||||||
// it if it is not printable or if it is an escape char.
 | 
					// it if it is not printable or if it is an escape char.
 | 
				
			||||||
static void PrintEscapedString(const char *Str, unsigned Length,
 | 
					static void PrintEscapedString(const StringRef &Name, raw_ostream &Out) {
 | 
				
			||||||
                               raw_ostream &Out) {
 | 
					  for (unsigned i = 0, e = Name.size(); i != e; ++i) {
 | 
				
			||||||
  for (unsigned i = 0; i != Length; ++i) {
 | 
					    unsigned char C = Name[i];
 | 
				
			||||||
    unsigned char C = Str[i];
 | 
					 | 
				
			||||||
    if (isprint(C) && C != '\\' && C != '"')
 | 
					    if (isprint(C) && C != '\\' && C != '"')
 | 
				
			||||||
      Out << C;
 | 
					      Out << C;
 | 
				
			||||||
    else
 | 
					    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 {
 | 
					enum PrefixType {
 | 
				
			||||||
  GlobalPrefix,
 | 
					  GlobalPrefix,
 | 
				
			||||||
  LabelPrefix,
 | 
					  LabelPrefix,
 | 
				
			||||||
| 
						 | 
					@ -93,9 +86,9 @@ enum PrefixType {
 | 
				
			||||||
/// PrintLLVMName - Turn the specified name into an 'LLVM name', which is either
 | 
					/// PrintLLVMName - Turn the specified name into an 'LLVM name', which is either
 | 
				
			||||||
/// prefixed with % (if the string only contains simple characters) or is
 | 
					/// prefixed with % (if the string only contains simple characters) or is
 | 
				
			||||||
/// surrounded with ""'s (if it has special chars in it).  Print it out.
 | 
					/// surrounded with ""'s (if it has special chars in it).  Print it out.
 | 
				
			||||||
static void PrintLLVMName(raw_ostream &OS, const char *NameStr,
 | 
					static void PrintLLVMName(raw_ostream &OS, const StringRef &Name,
 | 
				
			||||||
                          unsigned NameLen, PrefixType Prefix) {
 | 
					                          PrefixType Prefix) {
 | 
				
			||||||
  assert(NameStr && "Cannot get empty name!");
 | 
					  assert(Name.data() && "Cannot get empty name!");
 | 
				
			||||||
  switch (Prefix) {
 | 
					  switch (Prefix) {
 | 
				
			||||||
  default: llvm_unreachable("Bad prefix!");
 | 
					  default: llvm_unreachable("Bad prefix!");
 | 
				
			||||||
  case NoPrefix: break;
 | 
					  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.
 | 
					  // Scan the name to see if it needs quotes first.
 | 
				
			||||||
  bool NeedsQuotes = isdigit(NameStr[0]);
 | 
					  bool NeedsQuotes = isdigit(Name[0]);
 | 
				
			||||||
  if (!NeedsQuotes) {
 | 
					  if (!NeedsQuotes) {
 | 
				
			||||||
    for (unsigned i = 0; i != NameLen; ++i) {
 | 
					    for (unsigned i = 0, e = Name.size(); i != e; ++i) {
 | 
				
			||||||
      char C = NameStr[i];
 | 
					      char C = Name[i];
 | 
				
			||||||
      if (!isalnum(C) && C != '-' && C != '.' && C != '_') {
 | 
					      if (!isalnum(C) && C != '-' && C != '.' && C != '_') {
 | 
				
			||||||
        NeedsQuotes = true;
 | 
					        NeedsQuotes = true;
 | 
				
			||||||
        break;
 | 
					        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 we didn't need any quotes, just write out the name in one blast.
 | 
				
			||||||
  if (!NeedsQuotes) {
 | 
					  if (!NeedsQuotes) {
 | 
				
			||||||
    OS.write(NameStr, NameLen);
 | 
					    OS << Name;
 | 
				
			||||||
    return;
 | 
					    return;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  // Okay, we need quotes.  Output the quotes and escape any scary characters as
 | 
					  // Okay, we need quotes.  Output the quotes and escape any scary characters as
 | 
				
			||||||
  // needed.
 | 
					  // needed.
 | 
				
			||||||
  OS << '"';
 | 
					  OS << '"';
 | 
				
			||||||
  PrintEscapedString(NameStr, NameLen, OS);
 | 
					  PrintEscapedString(Name, OS);
 | 
				
			||||||
  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
 | 
					/// prefixed with % (if the string only contains simple characters) or is
 | 
				
			||||||
/// surrounded with ""'s (if it has special chars in it).  Print it out.
 | 
					/// surrounded with ""'s (if it has special chars in it).  Print it out.
 | 
				
			||||||
static void PrintLLVMName(raw_ostream &OS, const Value *V) {
 | 
					static void PrintLLVMName(raw_ostream &OS, const Value *V) {
 | 
				
			||||||
  PrintLLVMName(OS, V->getNameStart(), V->getNameLen(),
 | 
					  PrintLLVMName(OS, V->getName(), 
 | 
				
			||||||
                isa<GlobalValue>(V) ? GlobalPrefix : LocalPrefix);
 | 
					                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.
 | 
					    // Get the name as a string and insert it into TypeNames.
 | 
				
			||||||
    std::string NameStr;
 | 
					    std::string NameStr;
 | 
				
			||||||
    raw_string_ostream NameOS(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());
 | 
					    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)) {
 | 
					  if (const MDString *MDS = dyn_cast<MDString>(V)) {
 | 
				
			||||||
    Out << "!\"";
 | 
					    Out << "!\"";
 | 
				
			||||||
    PrintEscapedString(MDS->begin(), MDS->length(), Out);
 | 
					    PrintEscapedString(MDS->getString(), Out);
 | 
				
			||||||
    Out << '"';
 | 
					    Out << '"';
 | 
				
			||||||
    return;
 | 
					    return;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
| 
						 | 
					@ -1474,7 +1467,7 @@ void AssemblyWriter::printTypeSymbolTable(const TypeSymbolTable &ST) {
 | 
				
			||||||
  for (TypeSymbolTable::const_iterator TI = ST.begin(), TE = ST.end();
 | 
					  for (TypeSymbolTable::const_iterator TI = ST.begin(), TE = ST.end();
 | 
				
			||||||
       TI != TE; ++TI) {
 | 
					       TI != TE; ++TI) {
 | 
				
			||||||
    Out << '\t';
 | 
					    Out << '\t';
 | 
				
			||||||
    PrintLLVMName(Out, &TI->first[0], TI->first.size(), LocalPrefix);
 | 
					    PrintLLVMName(Out, TI->first, LocalPrefix);
 | 
				
			||||||
    Out << " = type ";
 | 
					    Out << " = type ";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Make sure we print out at least one level of the type structure, so
 | 
					    // 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) {
 | 
					void AssemblyWriter::printBasicBlock(const BasicBlock *BB) {
 | 
				
			||||||
  if (BB->hasName()) {              // Print out the label if it exists...
 | 
					  if (BB->hasName()) {              // Print out the label if it exists...
 | 
				
			||||||
    Out << "\n";
 | 
					    Out << "\n";
 | 
				
			||||||
    PrintLLVMName(Out, BB->getNameStart(), BB->getNameLen(), LabelPrefix);
 | 
					    PrintLLVMName(Out, BB->getName(), LabelPrefix);
 | 
				
			||||||
    Out << ':';
 | 
					    Out << ':';
 | 
				
			||||||
  } else if (!BB->use_empty()) {      // Don't print block # of no uses...
 | 
					  } else if (!BB->use_empty()) {      // Don't print block # of no uses...
 | 
				
			||||||
    Out << "\n; <label>:";
 | 
					    Out << "\n; <label>:";
 | 
				
			||||||
| 
						 | 
					@ -1982,7 +1975,7 @@ void Value::print(raw_ostream &OS, AssemblyAnnotationWriter *AAW) const {
 | 
				
			||||||
    TypePrinter.print(MDS->getType(), OS);
 | 
					    TypePrinter.print(MDS->getType(), OS);
 | 
				
			||||||
    OS << ' ';
 | 
					    OS << ' ';
 | 
				
			||||||
    OS << "!\"";
 | 
					    OS << "!\"";
 | 
				
			||||||
    PrintEscapedString(MDS->begin(), MDS->length(), OS);
 | 
					    PrintEscapedString(MDS->getString(), OS);
 | 
				
			||||||
    OS << '"';
 | 
					    OS << '"';
 | 
				
			||||||
  } else if (const MDNode *N = dyn_cast<MDNode>(this)) {
 | 
					  } else if (const MDNode *N = dyn_cast<MDNode>(this)) {
 | 
				
			||||||
    SlotTracker SlotTable(N);
 | 
					    SlotTracker SlotTable(N);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -241,23 +241,23 @@ void llvm::UpgradeIntrinsicCall(CallInst *CI, Function *NewFn) {
 | 
				
			||||||
    bool isMovSD = false, isShufPD = false;
 | 
					    bool isMovSD = false, isShufPD = false;
 | 
				
			||||||
    bool isUnpckhPD = false, isUnpcklPD = false;
 | 
					    bool isUnpckhPD = false, isUnpcklPD = false;
 | 
				
			||||||
    bool isPunpckhQPD = false, isPunpcklQPD = 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;
 | 
					      isLoadH = true;
 | 
				
			||||||
    else if (strcmp(F->getNameStart(), "llvm.x86.sse2.loadl.pd") == 0)
 | 
					    else if (F->getName() == "llvm.x86.sse2.loadl.pd")
 | 
				
			||||||
      isLoadL = true;
 | 
					      isLoadL = true;
 | 
				
			||||||
    else if (strcmp(F->getNameStart(), "llvm.x86.sse2.movl.dq") == 0)
 | 
					    else if (F->getName() == "llvm.x86.sse2.movl.dq")
 | 
				
			||||||
      isMovL = true;
 | 
					      isMovL = true;
 | 
				
			||||||
    else if (strcmp(F->getNameStart(), "llvm.x86.sse2.movs.d") == 0)
 | 
					    else if (F->getName() == "llvm.x86.sse2.movs.d")
 | 
				
			||||||
      isMovSD = true;
 | 
					      isMovSD = true;
 | 
				
			||||||
    else if (strcmp(F->getNameStart(), "llvm.x86.sse2.shuf.pd") == 0)
 | 
					    else if (F->getName() == "llvm.x86.sse2.shuf.pd")
 | 
				
			||||||
      isShufPD = true;
 | 
					      isShufPD = true;
 | 
				
			||||||
    else if (strcmp(F->getNameStart(), "llvm.x86.sse2.unpckh.pd") == 0)
 | 
					    else if (F->getName() == "llvm.x86.sse2.unpckh.pd")
 | 
				
			||||||
      isUnpckhPD = true;
 | 
					      isUnpckhPD = true;
 | 
				
			||||||
    else if (strcmp(F->getNameStart(), "llvm.x86.sse2.unpckl.pd") == 0)
 | 
					    else if (F->getName() == "llvm.x86.sse2.unpckl.pd")
 | 
				
			||||||
      isUnpcklPD = true;
 | 
					      isUnpcklPD = true;
 | 
				
			||||||
    else if (strcmp(F->getNameStart(), "llvm.x86.sse2.punpckh.qdq") == 0)
 | 
					    else if (F->getName() ==  "llvm.x86.sse2.punpckh.qdq")
 | 
				
			||||||
      isPunpckhQPD = true;
 | 
					      isPunpckhQPD = true;
 | 
				
			||||||
    else if (strcmp(F->getNameStart(), "llvm.x86.sse2.punpckl.qdq") == 0)
 | 
					    else if (F->getName() ==  "llvm.x86.sse2.punpckl.qdq")
 | 
				
			||||||
      isPunpcklQPD = true;
 | 
					      isPunpcklQPD = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (isLoadH || isLoadL || isMovL || isMovSD || isShufPD ||
 | 
					    if (isLoadH || isLoadL || isMovL || isMovSD || isShufPD ||
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -188,8 +188,7 @@ Constant *LLVMContextImpl::getConstantVector(const VectorType *Ty,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void LLVMContextImpl::erase(MDString *M) {
 | 
					void LLVMContextImpl::erase(MDString *M) {
 | 
				
			||||||
  sys::SmartScopedWriter<true> Writer(ConstantsLock);
 | 
					  sys::SmartScopedWriter<true> Writer(ConstantsLock);
 | 
				
			||||||
  MDStringCache.erase(MDStringCache.find(StringRef(M->StrBegin, 
 | 
					  MDStringCache.erase(MDStringCache.find(M->getString()));
 | 
				
			||||||
                                                   M->length())));
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void LLVMContextImpl::erase(MDNode *M) {
 | 
					void LLVMContextImpl::erase(MDNode *M) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -165,13 +165,6 @@ unsigned Value::getNameLen() const {
 | 
				
			||||||
  return Name ? Name->getKeyLength() : 0;
 | 
					  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 {
 | 
					std::string Value::getNameStr() const {
 | 
				
			||||||
  if (Name == 0) return "";
 | 
					  if (Name == 0) return "";
 | 
				
			||||||
| 
						 | 
					@ -179,11 +172,6 @@ std::string Value::getNameStr() const {
 | 
				
			||||||
                     Name->getKeyData()+Name->getKeyLength());
 | 
					                     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) {
 | 
					void Value::setName(const Twine &Name) {
 | 
				
			||||||
  SmallString<32> NameData;
 | 
					  SmallString<32> NameData;
 | 
				
			||||||
  Name.toVector(NameData);
 | 
					  Name.toVector(NameData);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -43,7 +43,7 @@ void ValueSymbolTable::reinsertValue(Value* V) {
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  // Otherwise, there is a naming conflict.  Rename this value.
 | 
					  // 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.
 | 
					  // The name is too already used, just free it so we can allocate a new name.
 | 
				
			||||||
  V->Name->Destroy();
 | 
					  V->Name->Destroy();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue