[lld] r210008 - Simplify markLive().

Rui Ueyama ruiu at google.com
Mon Jun 2 01:06:57 PDT 2014


Author: ruiu
Date: Mon Jun  2 03:06:57 2014
New Revision: 210008

URL: http://llvm.org/viewvc/llvm-project?rev=210008&view=rev
Log:
Simplify markLive().

Reference::target() never returns a nullptr, so NULL check
is not needed and is more harmful than doing nothing.
No functionality change.

Modified:
    lld/trunk/include/lld/Core/Resolver.h
    lld/trunk/lib/Core/Resolver.cpp

Modified: lld/trunk/include/lld/Core/Resolver.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/include/lld/Core/Resolver.h?rev=210008&r1=210007&r2=210008&view=diff
==============================================================================
--- lld/trunk/include/lld/Core/Resolver.h (original)
+++ lld/trunk/include/lld/Core/Resolver.h Mon Jun  2 03:06:57 2014
@@ -67,7 +67,7 @@ private:
   void checkDylibSymbolCollisions();
   void forEachUndefines(bool searchForOverrides, UndefCallback callback);
 
-  void markLive(const Atom &atom);
+  void markLive(const Atom *atom);
   void addAtoms(const std::vector<const DefinedAtom *>&);
 
   class MergedFile : public MutableFile {

Modified: lld/trunk/lib/Core/Resolver.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/Core/Resolver.cpp?rev=210008&r1=210007&r2=210008&view=diff
==============================================================================
--- lld/trunk/lib/Core/Resolver.cpp (original)
+++ lld/trunk/lib/Core/Resolver.cpp Mon Jun  2 03:06:57 2014
@@ -305,17 +305,16 @@ void Resolver::updateReferences() {
 }
 
 // For dead code stripping, recursively mark atoms "live"
-void Resolver::markLive(const Atom &atom) {
+void Resolver::markLive(const Atom *atom) {
   // Mark the atom is live. If it's already marked live, then stop recursion.
-  auto exists = _liveAtoms.insert(&atom);
+  auto exists = _liveAtoms.insert(atom);
   if (!exists.second)
     return;
 
   // Mark all atoms it references as live
-  if (const DefinedAtom *defAtom = dyn_cast<DefinedAtom>(&atom))
+  if (const DefinedAtom *defAtom = dyn_cast<DefinedAtom>(atom))
     for (const Reference *ref : *defAtom)
-      if (const Atom *target = ref->target())
-        markLive(*target);
+      markLive(ref->target());
 }
 
 // remove all atoms not actually used
@@ -342,7 +341,7 @@ void Resolver::deadStripOptimize() {
 
   // mark all roots as live, and recursively all atoms they reference
   for (const Atom *dsrAtom : _deadStripRoots)
-    markLive(*dsrAtom);
+    markLive(dsrAtom);
 
   // now remove all non-live atoms from _atoms
   _atoms.erase(std::remove_if(_atoms.begin(), _atoms.end(), [&](const Atom *a) {





More information about the llvm-commits mailing list