Mercurial > projects > ldc
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); |