MC: Tweak MCInstFragment to include the encoded data and fixups, so that we don't need to recompute them during relaxation. I will revisit this once all the other pieces of fast relaxation are in place.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99244 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/MC/MCAssembler.cpp b/lib/MC/MCAssembler.cpp
index ba2e5de..39bad6d 100644
--- a/lib/MC/MCAssembler.cpp
+++ b/lib/MC/MCAssembler.cpp
@@ -773,22 +773,14 @@
       SD.getFragmentList().insert(it2, DF);
 
       // Update the data fragments layout data.
+      DF->setParent(IF->getParent());
       DF->setOffset(IF->getOffset());
       DF->setFileSize(IF->getInstSize());
 
-      // Encode the final instruction.
-      SmallVector<MCFixup, 4> Fixups;
-      raw_svector_ostream VecOS(DF->getContents());
-      getEmitter().EncodeInstruction(IF->getInst(), VecOS, Fixups);
-
-      // Copy over the fixups.
-      //
-      // FIXME-PERF: Encode fixups directly into the data fragment as well.
-      for (unsigned i = 0, e = Fixups.size(); i != e; ++i) {
-        MCFixup &F = Fixups[i];
-        DF->addFixup(MCAsmFixup(DF->getContents().size()+F.getOffset(),
-                                *F.getValue(), F.getKind()));
-      }
+      // Copy in the data and the fixups.
+      DF->getContents().append(IF->getCode().begin(), IF->getCode().end());
+      for (unsigned i = 0, e = IF->getFixups().size(); i != e; ++i)
+        DF->getFixups().push_back(IF->getFixups()[i]);
 
       // Delete the instruction fragment and update the iterator.
       SD.getFragmentList().erase(IF);