diff --git a/lib/LD/IdenticalCodeFolding.cpp b/lib/LD/IdenticalCodeFolding.cpp
index 5ba0fc1..a899bb0 100644
--- a/lib/LD/IdenticalCodeFolding.cpp
+++ b/lib/LD/IdenticalCodeFolding.cpp
@@ -126,8 +126,7 @@
     for (sect = (*obj)->context()->sectBegin(); sect != sectEnd; ++sect) {
       switch ((*sect)->kind()) {
         case LDFileFormat::TEXT: {
-          candidate_map.insert(
-              std::make_pair(*sect, reinterpret_cast<LDSection*>(NULL)));
+          candidate_map.insert(std::make_pair(*sect, nullptr));
           break;
         }
         case LDFileFormat::Relocation: {
diff --git a/lib/Object/SectionMap.cpp b/lib/Object/SectionMap.cpp
index 615c493..9cba895 100644
--- a/lib/Object/SectionMap.cpp
+++ b/lib/Object/SectionMap.cpp
@@ -193,8 +193,7 @@
         return std::make_pair(*out, *in);
     }
   }
-  return std::make_pair(reinterpret_cast<Output*>(NULL),
-                        reinterpret_cast<Input*>(NULL));
+  return std::make_pair(nullptr, nullptr);
 }
 
 SectionMap::const_iterator SectionMap::find(
diff --git a/lib/Script/Assignment.cpp b/lib/Script/Assignment.cpp
index 333b366..1df7817 100644
--- a/lib/Script/Assignment.cpp
+++ b/lib/Script/Assignment.cpp
@@ -80,8 +80,7 @@
   switch (m_Level) {
     case OUTSIDE_SECTIONS:
       assert(!isLhsDot);
-      script.assignments().push_back(
-          std::make_pair(reinterpret_cast<LDSymbol*>(NULL), *this));
+      script.assignments().push_back(std::make_pair(nullptr, *this));
       break;
 
     case OUTPUT_SECTION: {
@@ -122,8 +121,7 @@
       if (isLhsDot) {
         out->dotAssignments().push_back(*this);
       } else {
-        script.assignments().push_back(
-            std::make_pair(reinterpret_cast<LDSymbol*>(NULL), *this));
+        script.assignments().push_back(std::make_pair(nullptr, *this));
       }
       break;
     }
@@ -138,8 +136,7 @@
               in->getSection()->getSectionData()->front());
           Assignment assign(
               INPUT_SECTION, HIDDEN, *SymOperand::create("."), *expr);
-          in->dotAssignments().push_back(
-              std::make_pair(reinterpret_cast<Fragment*>(NULL), assign));
+          in->dotAssignments().push_back(std::make_pair(nullptr, assign));
         }
 
         Assignment& prevDotAssign = in->dotAssignments().back().second;
@@ -158,8 +155,7 @@
         in->dotAssignments().push_back(std::make_pair(
             in->getSection()->getSectionData()->front().getNextNode(), *this));
       } else {
-        script.assignments().push_back(
-            std::make_pair(reinterpret_cast<LDSymbol*>(NULL), *this));
+        script.assignments().push_back(std::make_pair(nullptr, *this));
       }
       break;
     }
diff --git a/tools/mcld/Android.bp b/tools/mcld/Android.bp
index 3342f36..6681aae 100644
--- a/tools/mcld/Android.bp
+++ b/tools/mcld/Android.bp
@@ -42,7 +42,6 @@
 
     // arch-specific static libraries depend on libmcldTarget.
     // Can be removed once soong supports transitive static library dependencies
-    group_static_libs: true,
     static_libs: [
         "libmcldADT",
         "libmcldCore",
