Simplify. NFC.
authorRui Ueyama <ruiu@google.com>
Sun, 24 Jul 2016 01:18:18 +0000 (01:18 +0000)
committerRui Ueyama <ruiu@google.com>
Sun, 24 Jul 2016 01:18:18 +0000 (01:18 +0000)
llvm-svn: 276540

lld/ELF/LinkerScript.cpp

index 9f9252a..073832c 100644 (file)
@@ -330,23 +330,21 @@ LinkerScript<ELFT>::filter(std::vector<OutputSectionBase<ELFT> *> &Sections) {
     if (!Cmd)
       continue;
 
-    OutputSectionBase<ELFT> *Sec = *It;
-    switch (Cmd->Constraint) {
-    case ConstraintKind::NoConstraint:
+    if (Cmd->Constraint == ConstraintKind::NoConstraint) {
       ++It;
       continue;
-    case ConstraintKind::ReadOnly:
-      if (Sec->getFlags() & SHF_WRITE)
-        break;
-      ++It;
-      continue;
-    case ConstraintKind::ReadWrite:
-      if (!(Sec->getFlags() & SHF_WRITE))
-        break;
-      ++It;
+    }
+
+    OutputSectionBase<ELFT> *Sec = *It;
+    bool Writable = (Sec->getFlags() & SHF_WRITE);
+    bool RO = (Cmd->Constraint == ConstraintKind::ReadOnly);
+    bool RW = (Cmd->Constraint == ConstraintKind::ReadWrite);
+
+    if ((RO && Writable) || (RW && !Writable)) {
+      Sections.erase(It);
       continue;
     }
-    Sections.erase(It);
+    ++It;
   }
   return Sections;
 }