llvm-mc: Remove --show-fixups and always show as part of --show-encoding.
authorDaniel Dunbar <daniel@zuster.org>
Wed, 10 Feb 2010 01:41:14 +0000 (01:41 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Wed, 10 Feb 2010 01:41:14 +0000 (01:41 +0000)
Also, fix a silly memory leak.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95752 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/MC/MCStreamer.h
lib/MC/MCAsmStreamer.cpp
tools/llvm-mc/llvm-mc.cpp

index 69c1267080479d08feff448870d66dbd72e7d4b2..624d9a6c06b731adba5263a46af1606df604668e 100644 (file)
@@ -278,15 +278,12 @@ namespace llvm {
   ///
   /// \param ShowInst - Whether to show the MCInst representation inline with
   /// the assembly.
-  ///
-  /// \param ShowFixups - Whether to show the fixups in an encoded instruction.
   MCStreamer *createAsmStreamer(MCContext &Ctx, formatted_raw_ostream &OS,
                                 const MCAsmInfo &MAI, bool isLittleEndian,
                                 bool isVerboseAsm,
                                 MCInstPrinter *InstPrint = 0,
                                 MCCodeEmitter *CE = 0,
-                                bool ShowInst = false,
-                                bool ShowFixups = false);
+                                bool ShowInst = false);
 
   // FIXME: These two may end up getting rolled into a single
   // createObjectStreamer interface, which implements the assembler backend, and
index f4fe7257125e73b14d8f783e58be51b582c44169..3e3d1e59ed3fde070ed092e290d15ae030ea9dfc 100644 (file)
@@ -37,18 +37,17 @@ class MCAsmStreamer : public MCStreamer {
 
   unsigned IsLittleEndian : 1;
   unsigned IsVerboseAsm : 1;
-  unsigned ShowFixups : 1;
   unsigned ShowInst : 1;
 
 public:
   MCAsmStreamer(MCContext &Context, formatted_raw_ostream &os,
                 const MCAsmInfo &mai,
                 bool isLittleEndian, bool isVerboseAsm, MCInstPrinter *printer,
-                MCCodeEmitter *emitter, bool showInst, bool showFixups)
+                MCCodeEmitter *emitter, bool showInst)
     : MCStreamer(Context), OS(os), MAI(mai), InstPrinter(printer),
       Emitter(emitter), CommentStream(CommentToEmit),
       IsLittleEndian(isLittleEndian), IsVerboseAsm(isVerboseAsm),
-      ShowFixups(showFixups), ShowInst(showInst) {
+      ShowInst(showInst) {
     if (InstPrinter && IsVerboseAsm)
       InstPrinter->setCommentStream(CommentStream);
   }
@@ -543,22 +542,11 @@ void MCAsmStreamer::AddEncodingComment(const MCInst &Inst) {
   Emitter->EncodeInstruction(Inst, VecOS, Fixups);
   VecOS.flush();
 
-  // If we aren't showing fixups, just show the bytes.
-  if (!ShowFixups) {
-    OS << "encoding: [";
-    for (unsigned i = 0, e = Code.size(); i != e; ++i) {
-      if (i)
-        OS << ',';
-      OS << format("0x%02x", uint8_t(Code[i]));
-    }
-    OS << "]\n";
-    return;
-  }
-
   // If we are showing fixups, create symbolic markers in the encoded
   // representation. We do this by making a per-bit map to the fixup item index,
   // then trying to display it as nicely as possible.
-  uint8_t *FixupMap = new uint8_t[Code.size() * 8];
+  SmallVector<uint8_t, 64> FixupMap;
+  FixupMap.resize(Code.size() * 8);
   for (unsigned i = 0, e = Code.size() * 8; i != e; ++i)
     FixupMap[i] = 0;
 
@@ -652,8 +640,7 @@ MCStreamer *llvm::createAsmStreamer(MCContext &Context,
                                     formatted_raw_ostream &OS,
                                     const MCAsmInfo &MAI, bool isLittleEndian,
                                     bool isVerboseAsm, MCInstPrinter *IP,
-                                    MCCodeEmitter *CE, bool ShowInst,
-                                    bool ShowFixups) {
+                                    MCCodeEmitter *CE, bool ShowInst) {
   return new MCAsmStreamer(Context, OS, MAI, isLittleEndian, isVerboseAsm,
-                           IP, CE, ShowInst, ShowFixups);
+                           IP, CE, ShowInst);
 }
index 250d4dc22fdaffa759a8376923f489e7c8d7e07d..c05bd522c521f640aa81c01f0eb549cc8b10a7d5 100644 (file)
@@ -46,9 +46,6 @@ OutputFilename("o", cl::desc("Output filename"),
 static cl::opt<bool>
 ShowEncoding("show-encoding", cl::desc("Show instruction encodings"));
 
-static cl::opt<bool>
-ShowFixups("show-fixups", cl::desc("Show fixups inside encodings"));
-
 static cl::opt<bool>
 ShowInst("show-inst", cl::desc("Show internal instruction representation"));
 
@@ -273,7 +270,7 @@ static int AssembleInput(const char *ProgName) {
     Str.reset(createAsmStreamer(Ctx, *Out, *MAI,
                                 TM->getTargetData()->isLittleEndian(),
                                 /*asmverbose*/true, IP.get(), CE.get(),
-                                ShowInst, ShowFixups));
+                                ShowInst));
   } else {
     assert(FileType == OFT_ObjectFile && "Invalid file type!");
     CE.reset(TheTarget->createCodeEmitter(*TM));