Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(146)

Unified Diff: tools/llc/llc.cpp

Issue 8393017: Bitcode streaming (Closed)
Patch Set: Created 9 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tools/llc/llc.cpp
diff --git a/tools/llc/llc.cpp b/tools/llc/llc.cpp
index a61233ee636011e664f8920189c78f6ce3aa0567..7c1ccc12c4d67d1dd92eaefd40427aa0044916c1 100644
--- a/tools/llc/llc.cpp
+++ b/tools/llc/llc.cpp
@@ -18,6 +18,7 @@
#include "llvm/PassManager.h"
#include "llvm/Pass.h"
#include "llvm/ADT/Triple.h"
+#include "llvm/Bitcode/BitcodeStream.h"
#include "llvm/Support/IRReader.h"
#include "llvm/CodeGen/LinkAllAsmWriterComponents.h"
#include "llvm/CodeGen/LinkAllCodegenComponents.h"
@@ -329,7 +330,11 @@ int llc_main(int argc, char **argv) {
Context));
M->setModuleIdentifier(InputFilename);
#else
- M.reset(ParseIRFile(InputFilename, Err, Context));
+ //M.reset(ParseIRFile(InputFilename, Err, Context));
+ StreamChunkCallback cb = GetBitcodeFileStream(InputFilename, Err);
+ if (cb) {
+ M.reset(getLazyIRStreamModule(InputFilename, Err, Context, cb));
+ }
#endif // defined(__native_client__) && defined(NACL_SRPC)
if (M.get() == 0) {
Err.print(argv[0], errs());
@@ -445,7 +450,7 @@ int llc_main(int argc, char **argv) {
}
// Build up all of the passes that we want to do to the module.
- PassManager PM;
+ FunctionPassManager PM(&mod);
// Add the target data from the target machine, if it exists, or the module.
if (const TargetData *TD = Target.getTargetData())
@@ -498,7 +503,11 @@ int llc_main(int argc, char **argv) {
// Before executing passes, print the final values of the LLVM options.
cl::PrintOptionValues();
- PM.run(mod);
jasonwkim 2011/10/25 21:34:12 Why did you expand this?
(google.com) Derek Schuff 2011/10/25 22:23:22 Because the module-level pass manager caused the w
+ PM.doInitialization();
+ for (Module::iterator I = mod.begin(), E = mod.end(); I != E; ++I) {
+ PM.run(*I);
+ }
+ PM.doFinalization();
}
// Declare success.

Powered by Google App Engine
This is Rietveld 408576698