From: David Peixotto Date: Thu, 19 Dec 2013 18:08:08 +0000 (+0000) Subject: Add a finishParse() callback to the targer asm parser X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=6075fa1e0eba255e217095bd2573339e64de8c8d;p=oota-llvm.git Add a finishParse() callback to the targer asm parser This callback is invoked when the parse has finished successfuly. It will be used to write out ARM constant pools to implement the ldr pseudo. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197706 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/MC/MCTargetAsmParser.h b/include/llvm/MC/MCTargetAsmParser.h index d132a732c41..bfcf233f70b 100644 --- a/include/llvm/MC/MCTargetAsmParser.h +++ b/include/llvm/MC/MCTargetAsmParser.h @@ -182,6 +182,11 @@ public: return 0; } + /// Allow a target to perform any actions after the parse completes + /// successfully. For example, to write out constant pools for ldr pseudo on + /// ARM. + virtual void finishParse() {}; + virtual void onLabelParsed(MCSymbol *Symbol) { }; }; diff --git a/lib/MC/MCParser/AsmParser.cpp b/lib/MC/MCParser/AsmParser.cpp index 35f38a2a87c..5de10a7ba37 100644 --- a/lib/MC/MCParser/AsmParser.cpp +++ b/lib/MC/MCParser/AsmParser.cpp @@ -677,6 +677,10 @@ bool AsmParser::Run(bool NoInitialTextSection, bool NoFinalize) { } } + // Callback to the target parser in case it needs to do anything. + if (!HadError) + getTargetParser().finishParse(); + // Finalize the output stream if there are no errors and if the client wants // us to. if (!HadError && !NoFinalize)