From f12998e5d7a4409d2bf748a671c345a79085213e Mon Sep 17 00:00:00 2001 From: Rafael Ávila de Espíndola Date: Mon, 18 Apr 2011 10:02:34 -0400 Subject: Add a -c option. --- src/rustllvm/RustWrapper.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'src/rustllvm/RustWrapper.cpp') diff --git a/src/rustllvm/RustWrapper.cpp b/src/rustllvm/RustWrapper.cpp index b2dcd06555b..ad702555812 100644 --- a/src/rustllvm/RustWrapper.cpp +++ b/src/rustllvm/RustWrapper.cpp @@ -42,8 +42,15 @@ extern "C" void LLVMAddBasicAliasAnalysisPass(LLVMPassManagerRef PM); void (*RustHackToFetchPassesO)(LLVMPassManagerRef PM) = LLVMAddBasicAliasAnalysisPass; -extern "C" void LLVMRustWriteAssembly(LLVMPassManagerRef PMR, LLVMModuleRef M, - const char *triple, const char *path) { +enum LLVMCodeGenFileType { + LLVMAssemblyFile, + LLVMObjectFile, + LLVMNullFile // Do not emit any output. +}; + +extern "C" void LLVMRustWriteOutputFile(LLVMPassManagerRef PMR, LLVMModuleRef M, + const char *triple, const char *path, + LLVMCodeGenFileType FileType) { InitializeAllTargets(); InitializeAllAsmPrinters(); TargetMachine::setRelocationModel(Reloc::PIC_); @@ -53,13 +60,15 @@ extern "C" void LLVMRustWriteAssembly(LLVMPassManagerRef PMR, LLVMModuleRef M, TargetMachine &Target = *TheTarget->createTargetMachine(triple, FeaturesStr); bool NoVerify = false; CodeGenOpt::Level OLvl = CodeGenOpt::Default; - TargetMachine::CodeGenFileType FileType = TargetMachine::CGFT_AssemblyFile; PassManager *PM = unwrap(PMR); std::string ErrorInfo; raw_fd_ostream OS(path, ErrorInfo, raw_fd_ostream::F_Binary); formatted_raw_ostream FOS(OS); - bool foo = Target.addPassesToEmitFile(*PM, FOS, FileType, OLvl, NoVerify); + TargetMachine::CodeGenFileType FileType2 = + static_cast(FileType); + + bool foo = Target.addPassesToEmitFile(*PM, FOS, FileType2, OLvl, NoVerify); assert(!foo); PM->run(*unwrap(M)); } -- cgit 1.4.1-3-g733a5