From 7c11dbf5b09b5a91587c2b744ef52fa810992ee4 Mon Sep 17 00:00:00 2001
From: Sam Clegg <sbc@chromium.org>
Date: Sat, 13 Jan 2018 15:44:54 +0000
Subject: [PATCH] [WebAssembly] Move checking of InputSegment comdat group
 earlier

This should also fixe an unused varaible warning in the realeae
build.

llvm-svn: 322440
---
 lld/wasm/OutputSegment.h | 7 +++++++
 lld/wasm/Writer.cpp      | 7 +------
 2 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/lld/wasm/OutputSegment.h b/lld/wasm/OutputSegment.h
index 9825ce8e6975..420d9744165e 100644
--- a/lld/wasm/OutputSegment.h
+++ b/lld/wasm/OutputSegment.h
@@ -25,12 +25,18 @@ public:
 
   void addInputSegment(InputSegment *Segment) {
     Alignment = std::max(Alignment, Segment->getAlignment());
+    if (InputSegments.empty())
+      Comdat = Segment->getComdat();
+    else
+      assert(Comdat == Segment->getComdat());
     InputSegments.push_back(Segment);
     Size = llvm::alignTo(Size, Segment->getAlignment());
     Segment->setOutputSegment(this, Size);
     Size += Segment->getSize();
   }
 
+  StringRef getComdat() const { return Comdat; }
+
   uint32_t getSectionOffset() const { return SectionOffset; }
 
   void setSectionOffset(uint32_t Offset) { SectionOffset = Offset; }
@@ -47,6 +53,7 @@ public:
   std::string Header;
 
 private:
+  StringRef Comdat;
   uint32_t SectionOffset = 0;
 };
 
diff --git a/lld/wasm/Writer.cpp b/lld/wasm/Writer.cpp
index bb34f265d407..07b7b076102f 100644
--- a/lld/wasm/Writer.cpp
+++ b/lld/wasm/Writer.cpp
@@ -439,12 +439,7 @@ void Writer::createLinkingSection() {
           ComdatEntry{WASM_COMDAT_FUNCTION, F->getOutputIndex()});
   }
   for (uint32_t I = 0; I < Segments.size(); ++I) {
-    const auto &InputSegments = Segments[I]->InputSegments;
-    if (InputSegments.empty())
-      continue;
-    StringRef Comdat = InputSegments[0]->getComdat();
-    for (const InputSegment *IS : InputSegments)
-      assert(IS->getComdat() == Comdat);
+    StringRef Comdat = Segments[I]->getComdat();
     if (!Comdat.empty())
       Comdats[Comdat].emplace_back(ComdatEntry{WASM_COMDAT_DATA, I});
   }