diff options
Diffstat (limited to 'tools/llvm-mc/llvm-mc.cpp')
| -rw-r--r-- | tools/llvm-mc/llvm-mc.cpp | 10 | 
1 files changed, 9 insertions, 1 deletions
diff --git a/tools/llvm-mc/llvm-mc.cpp b/tools/llvm-mc/llvm-mc.cpp index 3c23990af6bf..6dce5cc96c74 100644 --- a/tools/llvm-mc/llvm-mc.cpp +++ b/tools/llvm-mc/llvm-mc.cpp @@ -55,7 +55,11 @@ static cl::opt<unsigned>  OutputAsmVariant("output-asm-variant",                   cl::desc("Syntax variant to use for output printing")); +static cl::opt<bool> +RelaxAll("mc-relax-all", cl::desc("Relax all fixups")); +  enum OutputFileType { +  OFT_Null,    OFT_AssemblyFile,    OFT_ObjectFile  }; @@ -65,6 +69,8 @@ FileType("filetype", cl::init(OFT_AssemblyFile),    cl::values(         clEnumValN(OFT_AssemblyFile, "asm",                    "Emit an assembly ('.s') file"), +       clEnumValN(OFT_Null, "null", +                  "Don't emit anything (for timing purposes)"),         clEnumValN(OFT_ObjectFile, "obj",                    "Emit a native object ('.o') file"),         clEnumValEnd)); @@ -289,11 +295,13 @@ static int AssembleInput(const char *ProgName) {        CE.reset(TheTarget->createCodeEmitter(*TM, Ctx));      Str.reset(createAsmStreamer(Ctx, *Out,TM->getTargetData()->isLittleEndian(),                                  /*asmverbose*/true, IP, CE.get(), ShowInst)); +  } else if (FileType == OFT_Null) { +    Str.reset(createNullStreamer(Ctx));    } else {      assert(FileType == OFT_ObjectFile && "Invalid file type!");      CE.reset(TheTarget->createCodeEmitter(*TM, Ctx));      TAB.reset(TheTarget->createAsmBackend(TripleName)); -    Str.reset(createMachOStreamer(Ctx, *TAB, *Out, CE.get())); +    Str.reset(createMachOStreamer(Ctx, *TAB, *Out, CE.get(), RelaxAll));    }    AsmParser Parser(SrcMgr, Ctx, *Str.get(), *MAI);  | 
