mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-09 13:33:17 +00:00
use OwningPtr and factor code better.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95156 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
56591ab218
commit
6cafdcc9af
@ -26,6 +26,7 @@
|
||||
#include "llvm/Target/TargetData.h"
|
||||
#include "llvm/Target/TargetRegistry.h"
|
||||
#include "llvm/Transforms/Scalar.h"
|
||||
#include "llvm/ADT/OwningPtr.h"
|
||||
#include "llvm/Support/CommandLine.h"
|
||||
#include "llvm/Support/Debug.h"
|
||||
#include "llvm/Support/FormattedStream.h"
|
||||
@ -119,34 +120,35 @@ LLVMTargetMachine::addPassesToEmitFile(PassManagerBase &PM,
|
||||
if (addCommonCodeGenPasses(PM, OptLevel))
|
||||
return CGFT_ErrorOccurred;
|
||||
|
||||
OwningPtr<MCContext> Context(new MCContext());
|
||||
OwningPtr<MCStreamer> AsmStreamer;
|
||||
|
||||
switch (FileType) {
|
||||
default:
|
||||
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, *Context, *AsmStreamer,
|
||||
getMCAsmInfo());
|
||||
if (Printer == 0) {
|
||||
delete AsmStreamer;
|
||||
delete Context;
|
||||
return CGFT_ErrorOccurred;
|
||||
}
|
||||
PM.add(Printer);
|
||||
AsmStreamer.reset(createAsmStreamer(*Context, Out, *getMCAsmInfo(),
|
||||
getTargetData()->isLittleEndian(),
|
||||
getVerboseAsm(), /*instprinter*/0,
|
||||
/*codeemitter*/0));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Create the AsmPrinter, which takes ownership of Context and AsmStreamer
|
||||
// if successful.
|
||||
FunctionPass *Printer =
|
||||
getTarget().createAsmPrinter(Out, *this, *Context, *AsmStreamer,
|
||||
getMCAsmInfo());
|
||||
if (Printer == 0)
|
||||
return CGFT_ErrorOccurred;
|
||||
|
||||
// If successful, createAsmPrinter took ownership of AsmStreamer and Context.
|
||||
Context.take(); AsmStreamer.take();
|
||||
|
||||
PM.add(Printer);
|
||||
|
||||
// Make sure the code model is set.
|
||||
setCodeModelForStatic();
|
||||
PM.add(createGCInfoDeleter());
|
||||
|
Loading…
x
Reference in New Issue
Block a user