Return a StringRef instead of a Comdat*.
authorRafael Espindola <rafael.espindola@gmail.com>
Mon, 17 Oct 2016 18:51:02 +0000 (18:51 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Mon, 17 Oct 2016 18:51:02 +0000 (18:51 +0000)
This is a small step in making this interface compatible with an
bitcode symbol table.

llvm-svn: 284408

llvm/include/llvm/LTO/LTO.h
llvm/tools/gold/gold-plugin.cpp

index e885c93..b2679af 100644 (file)
@@ -176,10 +176,9 @@ public:
       return GV && GV->isThreadLocal();
     }
 
-    //FIXME: We shouldn't expose this information.
-    Expected<const Comdat *> getComdat() const {
+    Expected<StringRef> getComdat() const {
       if (!GV)
-        return nullptr;
+        return "";
       const GlobalObject *GO;
       if (auto *GA = dyn_cast<GlobalAlias>(GV)) {
         GO = GA->getBaseObject();
@@ -189,9 +188,9 @@ public:
       } else {
         GO = cast<GlobalObject>(GV);
       }
-      if (GO)
-        return GO->getComdat();
-      return nullptr;
+      if (const Comdat *C = GO->getComdat())
+        return C->getName();
+      return "";
     }
 
     uint64_t getCommonSize() const {
index 9bdc7ab..055c462 100644 (file)
@@ -526,9 +526,9 @@ static ld_plugin_status claim_file_hook(const ld_plugin_input_file *file,
 
     sym.size = 0;
     sym.comdat_key = nullptr;
-    const Comdat *C = check(Sym.getComdat());
-    if (C)
-      sym.comdat_key = strdup(C->getName().str().c_str());
+    StringRef C = check(Sym.getComdat());
+    if (!C.empty())
+      sym.comdat_key = strdup(C.str().c_str());
 
     sym.resolution = LDPR_UNKNOWN;
   }