OSDN Git Service

Revert "Use StringRef instead of raw pointer in TargetRegistry API (NFC)"
authorMehdi Amini <mehdi.amini@apple.com>
Sat, 1 Oct 2016 07:08:23 +0000 (07:08 +0000)
committerMehdi Amini <mehdi.amini@apple.com>
Sat, 1 Oct 2016 07:08:23 +0000 (07:08 +0000)
This reverts commit r283017. Creates an infinite loop somehow.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283019 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Support/TargetRegistry.h
lib/Support/TargetRegistry.cpp
lib/Target/TargetMachineC.cpp
tools/llc/llc.cpp

index 9966ec9..99d679a 100644 (file)
@@ -165,10 +165,10 @@ private:
   ArchMatchFnTy ArchMatchFn;
 
   /// Name - The target name.
-  StringRef Name;
+  const char *Name;
 
   /// ShortDesc - A short description of the target.
-  StringRef ShortDesc;
+  const char *ShortDesc;
 
   /// HasJIT - Whether this target supports the JIT.
   bool HasJIT;
@@ -262,10 +262,10 @@ public:
   const Target *getNext() const { return Next; }
 
   /// getName - Get the target name.
-  StringRef getName() const { return Name; }
+  const char *getName() const { return Name; }
 
   /// getShortDescription - Get a short description of the target.
-  StringRef getShortDescription() const { return ShortDesc; }
+  const char *getShortDescription() const { return ShortDesc; }
 
   /// @}
   /// @name Feature Predicates
@@ -624,7 +624,7 @@ struct TargetRegistry {
   /// @param ArchMatchFn - The arch match checking function for this target.
   /// @param HasJIT - Whether the target supports JIT code
   /// generation.
-  static void RegisterTarget(Target &T, StringRef Name, StringRef ShortDesc,
+  static void RegisterTarget(Target &T, const char *Name, const char *ShortDesc,
                              Target::ArchMatchFnTy ArchMatchFn,
                              bool HasJIT = false);
 
@@ -857,7 +857,7 @@ struct TargetRegistry {
 template <Triple::ArchType TargetArchType = Triple::UnknownArch,
           bool HasJIT = false>
 struct RegisterTarget {
-  RegisterTarget(Target &T, StringRef Name, StringRef Desc) {
+  RegisterTarget(Target &T, const char *Name, const char *Desc) {
     TargetRegistry::RegisterTarget(T, Name, Desc, &getArchMatch, HasJIT);
   }
 
index 1b8ad3a..bed9ed6 100644 (file)
@@ -78,8 +78,8 @@ const Target *TargetRegistry::lookupTarget(const std::string &TT,
 
   auto J = std::find_if(std::next(I), targets().end(), ArchMatch);
   if (J != targets().end()) {
-    Error = ("Cannot choose between targets \"" + I->Name +
-            "\" a nd \"" + J->Name + "\"").str();
+    Error = std::string("Cannot choose between targets \"") + I->Name +
+            "\" and \"" + J->Name + "\"";
     return nullptr;
   }
 
@@ -87,16 +87,16 @@ const Target *TargetRegistry::lookupTarget(const std::string &TT,
 }
 
 void TargetRegistry::RegisterTarget(Target &T,
-                                    StringRef Name,
-                                    StringRef ShortDesc,
+                                    const char *Name,
+                                    const char *ShortDesc,
                                     Target::ArchMatchFnTy ArchMatchFn,
                                     bool HasJIT) {
-  assert(!Name.empty() && !ShortDesc.empty() && ArchMatchFn &&
+  assert(Name && ShortDesc && ArchMatchFn &&
          "Missing required target information!");
 
   // Check if this target has already been initialized, we allow this as a
   // convenience to some clients.
-  if (!T.Name.empty())
+  if (T.Name)
     return;
          
   // Add to the list of targets.
index b20012f..5fb5b02 100644 (file)
@@ -81,11 +81,11 @@ LLVMBool LLVMGetTargetFromTriple(const char* TripleStr, LLVMTargetRef *T,
 }
 
 const char * LLVMGetTargetName(LLVMTargetRef T) {
-  return unwrap(T)->getName().data();
+  return unwrap(T)->getName();
 }
 
 const char * LLVMGetTargetDescription(LLVMTargetRef T) {
-  return unwrap(T)->getShortDescription().data();
+  return unwrap(T)->getShortDescription();
 }
 
 LLVMBool LLVMTargetHasJIT(LLVMTargetRef T) {
index 2c64cf3..1a6ff63 100644 (file)
@@ -159,7 +159,7 @@ static cl::opt<RunPassOption, true, cl::parser<std::string>> RunPass(
 static int compileModule(char **, LLVMContext &);
 
 static std::unique_ptr<tool_output_file>
-GetOutputStream(StringRef TargetName, Triple::OSType OS,
+GetOutputStream(const char *TargetName, Triple::OSType OS,
                 const char *ProgName) {
   // If we don't yet have an output filename, make one.
   if (OutputFilename.empty()) {