comparison gen/toobj.cpp @ 1541:1e7a09548e67

Target.addPassesToEmitFile takes a formatted_raw_ostream now Build fix for LLVM r75670
author Benjamin Kramer <benny.kra@gmail.com>
date Tue, 14 Jul 2009 23:06:31 +0200
parents 61f12f4651b5
children ba2a5d2fe748
comparison
equal deleted inserted replaced
1540:a0114765fe34 1541:1e7a09548e67
19 #include "llvm/PassManager.h" 19 #include "llvm/PassManager.h"
20 #include "llvm/LinkAllPasses.h" 20 #include "llvm/LinkAllPasses.h"
21 #include "llvm/System/Program.h" 21 #include "llvm/System/Program.h"
22 #include "llvm/Support/raw_ostream.h" 22 #include "llvm/Support/raw_ostream.h"
23 #include "llvm/Support/CommandLine.h" 23 #include "llvm/Support/CommandLine.h"
24 #include "llvm/Support/FormattedStream.h"
24 #include "llvm/Target/TargetMachine.h" 25 #include "llvm/Target/TargetMachine.h"
25 26
26 #include "mars.h" 27 #include "mars.h"
27 #include "module.h" 28 #include "module.h"
28 #include "mtype.h" 29 #include "mtype.h"
306 if (global.params.symdebug || !optimize()) 307 if (global.params.symdebug || !optimize())
307 LastArg = CodeGenOpt::None; 308 LastArg = CodeGenOpt::None;
308 else if (optLevel() >= 3) 309 else if (optLevel() >= 3)
309 LastArg = CodeGenOpt::Aggressive; 310 LastArg = CodeGenOpt::Aggressive;
310 311
311 FileModel::Model mod = Target.addPassesToEmitFile(Passes, out, TargetMachine::AssemblyFile, LastArg); 312 llvm::formatted_raw_ostream fout(out);
313 FileModel::Model mod = Target.addPassesToEmitFile(Passes, fout, TargetMachine::AssemblyFile, LastArg);
312 assert(mod == FileModel::AsmFile); 314 assert(mod == FileModel::AsmFile);
313 315
314 bool err = Target.addPassesToEmitFileFinish(Passes, MCE, LastArg); 316 bool err = Target.addPassesToEmitFileFinish(Passes, MCE, LastArg);
315 assert(!err); 317 assert(!err);
316 318
320 for (llvm::Module::iterator I = m.begin(), E = m.end(); I != E; ++I) 322 for (llvm::Module::iterator I = m.begin(), E = m.end(); I != E; ++I)
321 if (!I->isDeclaration()) 323 if (!I->isDeclaration())
322 Passes.run(*I); 324 Passes.run(*I);
323 325
324 Passes.doFinalization(); 326 Passes.doFinalization();
327
328 fout.flush();
325 329
326 // release module from module provider so we can delete it ourselves 330 // release module from module provider so we can delete it ourselves
327 std::string Err; 331 std::string Err;
328 llvm::Module* rmod = Provider.releaseModule(&Err); 332 llvm::Module* rmod = Provider.releaseModule(&Err);
329 assert(rmod); 333 assert(rmod);