mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-21 23:17:16 +00:00
refactor code so that LLVMTargetMachine creates the asmstreamer and
mccontext instead of having AsmPrinter do it. This allows other types of MCStreamer's to be passed in. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95155 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -21,6 +21,9 @@
|
||||
#include "llvm/CodeGen/MachineFunctionAnalysis.h"
|
||||
#include "llvm/Target/TargetOptions.h"
|
||||
#include "llvm/MC/MCAsmInfo.h"
|
||||
#include "llvm/MC/MCContext.h"
|
||||
#include "llvm/MC/MCStreamer.h"
|
||||
#include "llvm/Target/TargetData.h"
|
||||
#include "llvm/Target/TargetRegistry.h"
|
||||
#include "llvm/Transforms/Scalar.h"
|
||||
#include "llvm/Support/CommandLine.h"
|
||||
@@ -121,10 +124,24 @@ LLVMTargetMachine::addPassesToEmitFile(PassManagerBase &PM,
|
||||
case CGFT_ObjectFile:
|
||||
return CGFT_ErrorOccurred;
|
||||
case CGFT_AssemblyFile: {
|
||||
MCContext *Context = new MCContext();
|
||||
MCStreamer *AsmStreamer =
|
||||
createAsmStreamer(*Context, Out, *getMCAsmInfo(),
|
||||
getTargetData()->isLittleEndian(),
|
||||
getVerboseAsm(),
|
||||
/*instprinter*/0,
|
||||
/*codeemitter*/0);
|
||||
|
||||
// Create the AsmPrinter, which takes ownership of Context and AsmStreamer
|
||||
// if successful.
|
||||
FunctionPass *Printer =
|
||||
getTarget().createAsmPrinter(Out, *this, getMCAsmInfo(),
|
||||
getVerboseAsm());
|
||||
if (Printer == 0) return CGFT_ErrorOccurred;
|
||||
getTarget().createAsmPrinter(Out, *this, *Context, *AsmStreamer,
|
||||
getMCAsmInfo());
|
||||
if (Printer == 0) {
|
||||
delete AsmStreamer;
|
||||
delete Context;
|
||||
return CGFT_ErrorOccurred;
|
||||
}
|
||||
PM.add(Printer);
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user