mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-16 00:17:32 +00:00
Convert llvm-extract to use lazy loading. This makes it substantially
faster on large modules. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112110 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
1a68958d3d
commit
44f95335dd
@ -71,9 +71,10 @@ int main(int argc, char **argv) {
|
||||
llvm_shutdown_obj Y; // Call llvm_shutdown() on exit.
|
||||
cl::ParseCommandLineOptions(argc, argv, "llvm extractor\n");
|
||||
|
||||
// Use lazy loading, since we only care about selected global values.
|
||||
SMDiagnostic Err;
|
||||
std::auto_ptr<Module> M;
|
||||
M.reset(ParseIRFile(InputFilename, Err, Context));
|
||||
M.reset(getLazyIRFileModule(InputFilename, Err, Context));
|
||||
|
||||
if (M.get() == 0) {
|
||||
Err.Print(argv[0], errs());
|
||||
@ -104,6 +105,18 @@ int main(int argc, char **argv) {
|
||||
GVs.push_back(GV);
|
||||
}
|
||||
|
||||
// Materialize requisite global values.
|
||||
for (size_t i = 0, e = GVs.size(); i != e; ++i) {
|
||||
GlobalValue *GV = GVs[i];
|
||||
if (GV->isMaterializable()) {
|
||||
std::string ErrInfo;
|
||||
if (GV->Materialize(&ErrInfo)) {
|
||||
errs() << argv[0] << ": error reading input: " << ErrInfo << "\n";
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// In addition to deleting all other functions, we also want to spiff it
|
||||
// up a little bit. Do this now.
|
||||
PassManager Passes;
|
||||
|
Loading…
Reference in New Issue
Block a user