aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2009-09-18 20:17:03 +0000
committerChris Lattner <sabre@nondot.org>2009-09-18 20:17:03 +0000
commitb611307c9730ae90448fcacfd8ee9d0d208cc3ee (patch)
treeeef8fce9a7047091da6319a75875788892e47741
parent899369d4ad9633b3fcf4aba63dc411ce1988ad75 (diff)
downloadexternal_llvm-b611307c9730ae90448fcacfd8ee9d0d208cc3ee.zip
external_llvm-b611307c9730ae90448fcacfd8ee9d0d208cc3ee.tar.gz
external_llvm-b611307c9730ae90448fcacfd8ee9d0d208cc3ee.tar.bz2
add a new hook to allow targets to splat stuff at the end of the file.
Overriding doFinalization is pretty lame. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82268 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/llvm/CodeGen/AsmPrinter.h4
-rw-r--r--lib/CodeGen/AsmPrinter/AsmPrinter.cpp5
2 files changed, 9 insertions, 0 deletions
diff --git a/include/llvm/CodeGen/AsmPrinter.h b/include/llvm/CodeGen/AsmPrinter.h
index a1765c4..84d0a43 100644
--- a/include/llvm/CodeGen/AsmPrinter.h
+++ b/include/llvm/CodeGen/AsmPrinter.h
@@ -169,6 +169,10 @@ namespace llvm {
/// call this implementation.
bool doInitialization(Module &M);
+ /// EmitEndOfAsmFile - This virtual method can be overridden by targets that
+ /// want to emit something at the end of their file.
+ virtual void EmitEndOfAsmFile(Module &M) {}
+
/// doFinalization - Shut down the asmprinter. If you override this in your
/// pass, you must make sure to call it explicitly.
bool doFinalization(Module &M);
diff --git a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
index e29bff5..dec78a3 100644
--- a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
+++ b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
@@ -208,6 +208,11 @@ bool AsmPrinter::doFinalization(Module &M) {
if (MAI->getNonexecutableStackDirective())
O << MAI->getNonexecutableStackDirective() << '\n';
+
+ // Allow the target to emit any magic that it wants at the end of the file,
+ // after everything else has gone out.
+ EmitEndOfAsmFile(M);
+
delete Mang; Mang = 0;
DW = 0; MMI = 0;