mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-31 08:16:47 +00:00 
			
		
		
		
	llvm-mc: Remove --show-fixups and always show as part of --show-encoding.
Also, fix a silly memory leak. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95752 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
		| @@ -278,15 +278,12 @@ namespace llvm { | |||||||
|   /// |   /// | ||||||
|   /// \param ShowInst - Whether to show the MCInst representation inline with |   /// \param ShowInst - Whether to show the MCInst representation inline with | ||||||
|   /// the assembly. |   /// the assembly. | ||||||
|   /// |  | ||||||
|   /// \param ShowFixups - Whether to show the fixups in an encoded instruction. |  | ||||||
|   MCStreamer *createAsmStreamer(MCContext &Ctx, formatted_raw_ostream &OS, |   MCStreamer *createAsmStreamer(MCContext &Ctx, formatted_raw_ostream &OS, | ||||||
|                                 const MCAsmInfo &MAI, bool isLittleEndian, |                                 const MCAsmInfo &MAI, bool isLittleEndian, | ||||||
|                                 bool isVerboseAsm, |                                 bool isVerboseAsm, | ||||||
|                                 MCInstPrinter *InstPrint = 0, |                                 MCInstPrinter *InstPrint = 0, | ||||||
|                                 MCCodeEmitter *CE = 0, |                                 MCCodeEmitter *CE = 0, | ||||||
|                                 bool ShowInst = false, |                                 bool ShowInst = false); | ||||||
|                                 bool ShowFixups = false); |  | ||||||
|  |  | ||||||
|   // FIXME: These two may end up getting rolled into a single |   // FIXME: These two may end up getting rolled into a single | ||||||
|   // createObjectStreamer interface, which implements the assembler backend, and |   // createObjectStreamer interface, which implements the assembler backend, and | ||||||
|   | |||||||
| @@ -37,18 +37,17 @@ class MCAsmStreamer : public MCStreamer { | |||||||
|  |  | ||||||
|   unsigned IsLittleEndian : 1; |   unsigned IsLittleEndian : 1; | ||||||
|   unsigned IsVerboseAsm : 1; |   unsigned IsVerboseAsm : 1; | ||||||
|   unsigned ShowFixups : 1; |  | ||||||
|   unsigned ShowInst : 1; |   unsigned ShowInst : 1; | ||||||
|  |  | ||||||
| public: | public: | ||||||
|   MCAsmStreamer(MCContext &Context, formatted_raw_ostream &os, |   MCAsmStreamer(MCContext &Context, formatted_raw_ostream &os, | ||||||
|                 const MCAsmInfo &mai, |                 const MCAsmInfo &mai, | ||||||
|                 bool isLittleEndian, bool isVerboseAsm, MCInstPrinter *printer, |                 bool isLittleEndian, bool isVerboseAsm, MCInstPrinter *printer, | ||||||
|                 MCCodeEmitter *emitter, bool showInst, bool showFixups) |                 MCCodeEmitter *emitter, bool showInst) | ||||||
|     : MCStreamer(Context), OS(os), MAI(mai), InstPrinter(printer), |     : MCStreamer(Context), OS(os), MAI(mai), InstPrinter(printer), | ||||||
|       Emitter(emitter), CommentStream(CommentToEmit), |       Emitter(emitter), CommentStream(CommentToEmit), | ||||||
|       IsLittleEndian(isLittleEndian), IsVerboseAsm(isVerboseAsm), |       IsLittleEndian(isLittleEndian), IsVerboseAsm(isVerboseAsm), | ||||||
|       ShowFixups(showFixups), ShowInst(showInst) { |       ShowInst(showInst) { | ||||||
|     if (InstPrinter && IsVerboseAsm) |     if (InstPrinter && IsVerboseAsm) | ||||||
|       InstPrinter->setCommentStream(CommentStream); |       InstPrinter->setCommentStream(CommentStream); | ||||||
|   } |   } | ||||||
| @@ -543,22 +542,11 @@ void MCAsmStreamer::AddEncodingComment(const MCInst &Inst) { | |||||||
|   Emitter->EncodeInstruction(Inst, VecOS, Fixups); |   Emitter->EncodeInstruction(Inst, VecOS, Fixups); | ||||||
|   VecOS.flush(); |   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 |   // 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, |   // representation. We do this by making a per-bit map to the fixup item index, | ||||||
|   // then trying to display it as nicely as possible. |   // 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) |   for (unsigned i = 0, e = Code.size() * 8; i != e; ++i) | ||||||
|     FixupMap[i] = 0; |     FixupMap[i] = 0; | ||||||
|  |  | ||||||
| @@ -652,8 +640,7 @@ MCStreamer *llvm::createAsmStreamer(MCContext &Context, | |||||||
|                                     formatted_raw_ostream &OS, |                                     formatted_raw_ostream &OS, | ||||||
|                                     const MCAsmInfo &MAI, bool isLittleEndian, |                                     const MCAsmInfo &MAI, bool isLittleEndian, | ||||||
|                                     bool isVerboseAsm, MCInstPrinter *IP, |                                     bool isVerboseAsm, MCInstPrinter *IP, | ||||||
|                                     MCCodeEmitter *CE, bool ShowInst, |                                     MCCodeEmitter *CE, bool ShowInst) { | ||||||
|                                     bool ShowFixups) { |  | ||||||
|   return new MCAsmStreamer(Context, OS, MAI, isLittleEndian, isVerboseAsm, |   return new MCAsmStreamer(Context, OS, MAI, isLittleEndian, isVerboseAsm, | ||||||
|                            IP, CE, ShowInst, ShowFixups); |                            IP, CE, ShowInst); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -46,9 +46,6 @@ OutputFilename("o", cl::desc("Output filename"), | |||||||
| static cl::opt<bool> | static cl::opt<bool> | ||||||
| ShowEncoding("show-encoding", cl::desc("Show instruction encodings")); | 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> | static cl::opt<bool> | ||||||
| ShowInst("show-inst", cl::desc("Show internal instruction representation")); | 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, |     Str.reset(createAsmStreamer(Ctx, *Out, *MAI, | ||||||
|                                 TM->getTargetData()->isLittleEndian(), |                                 TM->getTargetData()->isLittleEndian(), | ||||||
|                                 /*asmverbose*/true, IP.get(), CE.get(), |                                 /*asmverbose*/true, IP.get(), CE.get(), | ||||||
|                                 ShowInst, ShowFixups)); |                                 ShowInst)); | ||||||
|   } else { |   } else { | ||||||
|     assert(FileType == OFT_ObjectFile && "Invalid file type!"); |     assert(FileType == OFT_ObjectFile && "Invalid file type!"); | ||||||
|     CE.reset(TheTarget->createCodeEmitter(*TM)); |     CE.reset(TheTarget->createCodeEmitter(*TM)); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user