OLD | NEW |
1 //===-- llc.cpp - Implement the LLVM Native Code Generator ----------------===// | 1 //===-- llc.cpp - Implement the LLVM Native Code Generator ----------------===// |
2 // | 2 // |
3 // The LLVM Compiler Infrastructure | 3 // The LLVM Compiler Infrastructure |
4 // | 4 // |
5 // This file is distributed under the University of Illinois Open Source | 5 // This file is distributed under the University of Illinois Open Source |
6 // License. See LICENSE.TXT for details. | 6 // License. See LICENSE.TXT for details. |
7 // | 7 // |
8 //===----------------------------------------------------------------------===// | 8 //===----------------------------------------------------------------------===// |
9 // | 9 // |
10 // This is the llc code generator driver. It provides a convenient | 10 // This is the llc code generator driver. It provides a convenient |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
119 cl::init(false)); | 119 cl::init(false)); |
120 | 120 |
121 static cl::opt<bool> | 121 static cl::opt<bool> |
122 PNaClABIVerify("pnaclabi-verify", | 122 PNaClABIVerify("pnaclabi-verify", |
123 cl::desc("Verify PNaCl bitcode ABI before translating"), | 123 cl::desc("Verify PNaCl bitcode ABI before translating"), |
124 cl::init(false)); | 124 cl::init(false)); |
125 static cl::opt<bool> | 125 static cl::opt<bool> |
126 PNaClABIVerifyFatalErrors("pnaclabi-verify-fatal-errors", | 126 PNaClABIVerifyFatalErrors("pnaclabi-verify-fatal-errors", |
127 cl::desc("PNaCl ABI verification errors are fatal"), | 127 cl::desc("PNaCl ABI verification errors are fatal"), |
128 cl::init(false)); | 128 cl::init(false)); |
129 // @LOCALMOD-END | 129 static cl::opt<bool> |
| 130 AllowDebugMetadata("pnaclabi-verify-allow-debug", |
| 131 cl::desc("Allow debug metadata during PNaCl ABI verification."), |
| 132 cl::init(false)); |
| 133 //// @LOCALMOD-END |
130 | 134 |
131 // Determine optimization level. | 135 // Determine optimization level. |
132 static cl::opt<char> | 136 static cl::opt<char> |
133 OptLevel("O", | 137 OptLevel("O", |
134 cl::desc("Optimization level. [-O0, -O1, -O2, or -O3] " | 138 cl::desc("Optimization level. [-O0, -O1, -O2, or -O3] " |
135 "(default = '-O2')"), | 139 "(default = '-O2')"), |
136 cl::Prefix, | 140 cl::Prefix, |
137 cl::ZeroOrMore, | 141 cl::ZeroOrMore, |
138 cl::init(' ')); | 142 cl::init(' ')); |
139 | 143 |
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
381 | 385 |
382 mod = M.get(); | 386 mod = M.get(); |
383 if (mod == 0) { | 387 if (mod == 0) { |
384 Err.print(argv[0], errs()); | 388 Err.print(argv[0], errs()); |
385 return 1; | 389 return 1; |
386 } | 390 } |
387 | 391 |
388 // @LOCALMOD-BEGIN | 392 // @LOCALMOD-BEGIN |
389 if (PNaClABIVerify) { | 393 if (PNaClABIVerify) { |
390 // Verify the module (but not the functions yet) | 394 // Verify the module (but not the functions yet) |
391 ModulePass *VerifyPass = createPNaClABIVerifyModulePass(&ABIErrorReporter)
; | 395 ModulePass *VerifyPass = createPNaClABIVerifyModulePass( |
| 396 &ABIErrorReporter, AllowDebugMetadata); |
392 VerifyPass->runOnModule(*mod); | 397 VerifyPass->runOnModule(*mod); |
393 CheckABIVerifyErrors(ABIErrorReporter, "Module"); | 398 CheckABIVerifyErrors(ABIErrorReporter, "Module"); |
394 } | 399 } |
395 #if defined(__native_client__) && defined(NACL_SRPC) | 400 #if defined(__native_client__) && defined(NACL_SRPC) |
396 RecordMetadataForSrpc(*mod); | 401 RecordMetadataForSrpc(*mod); |
397 | 402 |
398 // To determine if we should compile PIC or not, we needed to load at | 403 // To determine if we should compile PIC or not, we needed to load at |
399 // least the metadata. Since we've already constructed the commandline, | 404 // least the metadata. Since we've already constructed the commandline, |
400 // we have to hack this in after commandline processing. | 405 // we have to hack this in after commandline processing. |
401 if (mod->getOutputFormat() == Module::SharedOutputFormat) { | 406 if (mod->getOutputFormat() == Module::SharedOutputFormat) { |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
515 // @LOCALMOD-BEGIN | 520 // @LOCALMOD-BEGIN |
516 OwningPtr<PassManagerBase> PM; | 521 OwningPtr<PassManagerBase> PM; |
517 if (LazyBitcode || ReduceMemoryFootprint) | 522 if (LazyBitcode || ReduceMemoryFootprint) |
518 PM.reset(new FunctionPassManager(mod)); | 523 PM.reset(new FunctionPassManager(mod)); |
519 else | 524 else |
520 PM.reset(new PassManager()); | 525 PM.reset(new PassManager()); |
521 | 526 |
522 // Add the ABI verifier pass before the analysis and code emission passes. | 527 // Add the ABI verifier pass before the analysis and code emission passes. |
523 FunctionPass *FunctionVerifyPass = NULL; | 528 FunctionPass *FunctionVerifyPass = NULL; |
524 if (PNaClABIVerify) { | 529 if (PNaClABIVerify) { |
525 FunctionVerifyPass = createPNaClABIVerifyFunctionsPass(&ABIErrorReporter); | 530 FunctionVerifyPass = createPNaClABIVerifyFunctionsPass( |
| 531 &ABIErrorReporter, AllowDebugMetadata); |
526 PM->add(FunctionVerifyPass); | 532 PM->add(FunctionVerifyPass); |
527 } | 533 } |
528 // @LOCALMOD-END | 534 // @LOCALMOD-END |
529 | 535 |
530 // Add an appropriate TargetLibraryInfo pass for the module's triple. | 536 // Add an appropriate TargetLibraryInfo pass for the module's triple. |
531 TargetLibraryInfo *TLI = new TargetLibraryInfo(TheTriple); | 537 TargetLibraryInfo *TLI = new TargetLibraryInfo(TheTriple); |
532 if (DisableSimplifyLibCalls) | 538 if (DisableSimplifyLibCalls) |
533 TLI->disableAllFunctions(); | 539 TLI->disableAllFunctions(); |
534 PM->add(TLI); | 540 PM->add(TLI); |
535 | 541 |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
661 } | 667 } |
662 | 668 |
663 #if !defined(NACL_SRPC) | 669 #if !defined(NACL_SRPC) |
664 int | 670 int |
665 main (int argc, char **argv) { | 671 main (int argc, char **argv) { |
666 return llc_main(argc, argv); | 672 return llc_main(argc, argv); |
667 } | 673 } |
668 #else | 674 #else |
669 // main() is in nacl_file.cpp. | 675 // main() is in nacl_file.cpp. |
670 #endif | 676 #endif |
OLD | NEW |