diff options
| -rw-r--r-- | clang/tools/driver/cc1as_main.cpp | 18 | 
1 files changed, 11 insertions, 7 deletions
diff --git a/clang/tools/driver/cc1as_main.cpp b/clang/tools/driver/cc1as_main.cpp index 10da402544e..dd18ea75c23 100644 --- a/clang/tools/driver/cc1as_main.cpp +++ b/clang/tools/driver/cc1as_main.cpp @@ -29,6 +29,7 @@  #include "llvm/MC/MCAsmInfo.h"  #include "llvm/MC/MCCodeEmitter.h"  #include "llvm/MC/MCContext.h" +#include "llvm/MC/MCInstrInfo.h"  #include "llvm/MC/MCStreamer.h"  #include "llvm/MC/MCSubtargetInfo.h"  #include "llvm/Support/CommandLine.h" @@ -48,11 +49,13 @@  #include "llvm/Target/TargetAsmInfo.h"  #include "llvm/Target/TargetAsmParser.h"  #include "llvm/Target/TargetData.h" +#include "llvm/Target/TargetInstrInfo.h"  #include "llvm/Target/TargetLowering.h"  #include "llvm/Target/TargetLoweringObjectFile.h"  #include "llvm/Target/TargetMachine.h"  #include "llvm/Target/TargetRegistry.h"  #include "llvm/Target/TargetSelect.h" +#include "llvm/Target/TargetSubtargetInfo.h"  using namespace clang;  using namespace clang::driver;  using namespace llvm; @@ -280,6 +283,8 @@ static bool ExecuteAssembler(AssemblerInvocation &Opts, Diagnostic &Diags) {      TM->getTargetLowering()->getObjFileLowering();    const_cast<TargetLoweringObjectFile&>(TLOF).Initialize(Ctx, *TM); +  const MCSubtargetInfo &STI = TM->getSubtarget<MCSubtargetInfo>(); +    // FIXME: There is a bit of code duplication with addPassesToEmitFile.    if (Opts.OutputType == AssemblerInvocation::FT_Asm) {      MCInstPrinter *IP = @@ -287,7 +292,7 @@ static bool ExecuteAssembler(AssemblerInvocation &Opts, Diagnostic &Diags) {      MCCodeEmitter *CE = 0;      TargetAsmBackend *TAB = 0;      if (Opts.ShowEncoding) { -      CE = TheTarget->createCodeEmitter(*TM, Ctx); +      CE = TheTarget->createCodeEmitter(*TM->getInstrInfo(), STI, Ctx);        TAB = TheTarget->createAsmBackend(Opts.Triple);      }      Str.reset(TheTarget->createAsmStreamer(Ctx, *Out, /*asmverbose*/true, @@ -299,7 +304,8 @@ static bool ExecuteAssembler(AssemblerInvocation &Opts, Diagnostic &Diags) {    } else {      assert(Opts.OutputType == AssemblerInvocation::FT_Obj &&             "Invalid file type!"); -    MCCodeEmitter *CE = TheTarget->createCodeEmitter(*TM, Ctx); +    MCCodeEmitter *CE = TheTarget->createCodeEmitter(*TM->getInstrInfo(), +                                                     STI, Ctx);      TargetAsmBackend *TAB = TheTarget->createAsmBackend(Opts.Triple);      Str.reset(TheTarget->createObjectStreamer(Opts.Triple, Ctx, *TAB, *Out,                                                CE, Opts.RelaxAll, @@ -309,11 +315,8 @@ static bool ExecuteAssembler(AssemblerInvocation &Opts, Diagnostic &Diags) {    OwningPtr<MCAsmParser> Parser(createMCAsmParser(*TheTarget, SrcMgr, Ctx,                                                    *Str.get(), *MAI)); -  OwningPtr<MCSubtargetInfo> -    STI(TheTarget->createMCSubtargetInfo(TM->getTargetTriple(), -                                         TM->getTargetCPU(), -                                         TM->getTargetFeatureString())); -  OwningPtr<TargetAsmParser> TAP(TheTarget->createAsmParser(*STI, *Parser)); +  OwningPtr<TargetAsmParser> +    TAP(TheTarget->createAsmParser(const_cast<MCSubtargetInfo&>(STI), *Parser));    if (!TAP) {      Diags.Report(diag::err_target_unknown_triple) << Opts.Triple;      return false; @@ -353,6 +356,7 @@ int cc1as_main(const char **ArgBegin, const char **ArgEnd,    InitializeAllTargetInfos();    // FIXME: We shouldn't need to initialize the Target(Machine)s.    InitializeAllTargets(); +  InitializeAllMCInstrInfos();    InitializeAllMCSubtargetInfos();    InitializeAllAsmPrinters();    InitializeAllAsmParsers();  | 

