OLD | NEW |
1 //===- subzero/src/llvm2ice.cpp - Driver for testing ----------------------===// | 1 //===- subzero/src/llvm2ice.cpp - Driver for testing ----------------------===// |
2 // | 2 // |
3 // The Subzero Code Generator | 3 // The Subzero Code Generator |
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 file defines a driver that uses LLVM capabilities to parse a | 10 // This file defines a driver that uses LLVM capabilities to parse a |
(...skipping 559 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
570 clEnumValN(Ice::IceV_Succs, "succ", "Show successors"), | 570 clEnumValN(Ice::IceV_Succs, "succ", "Show successors"), |
571 clEnumValN(Ice::IceV_Liveness, "live", "Liveness information"), | 571 clEnumValN(Ice::IceV_Liveness, "live", "Liveness information"), |
572 clEnumValN(Ice::IceV_RegManager, "rmgr", "Register manager status"), | 572 clEnumValN(Ice::IceV_RegManager, "rmgr", "Register manager status"), |
573 clEnumValN(Ice::IceV_RegOrigins, "orig", "Physical register origins"), | 573 clEnumValN(Ice::IceV_RegOrigins, "orig", "Physical register origins"), |
574 clEnumValN(Ice::IceV_LinearScan, "regalloc", "Linear scan details"), | 574 clEnumValN(Ice::IceV_LinearScan, "regalloc", "Linear scan details"), |
575 clEnumValN(Ice::IceV_Frame, "frame", "Stack frame layout details"), | 575 clEnumValN(Ice::IceV_Frame, "frame", "Stack frame layout details"), |
576 clEnumValN(Ice::IceV_Timing, "time", "Pass timing details"), | 576 clEnumValN(Ice::IceV_Timing, "time", "Pass timing details"), |
577 clEnumValN(Ice::IceV_All, "all", "Use all verbose options"), | 577 clEnumValN(Ice::IceV_All, "all", "Use all verbose options"), |
578 clEnumValN(Ice::IceV_None, "none", "No verbosity"), clEnumValEnd)); | 578 clEnumValN(Ice::IceV_None, "none", "No verbosity"), clEnumValEnd)); |
579 static cl::opt<std::string> IRFilename(cl::Positional, cl::desc("<IR file>"), | 579 static cl::opt<std::string> IRFilename(cl::Positional, cl::desc("<IR file>"), |
580 cl::Required); | 580 cl::init("-")); |
581 static cl::opt<std::string> OutputFilename("o", | 581 static cl::opt<std::string> OutputFilename("o", |
582 cl::desc("Override output filename"), | 582 cl::desc("Override output filename"), |
583 cl::init("-"), | 583 cl::init("-"), |
584 cl::value_desc("filename")); | 584 cl::value_desc("filename")); |
585 static cl::opt<std::string> | 585 static cl::opt<std::string> |
586 TestPrefix("prefix", cl::desc("Prepend a prefix to symbol names for testing"), | 586 TestPrefix("prefix", cl::desc("Prepend a prefix to symbol names for testing"), |
587 cl::init(""), cl::value_desc("prefix")); | 587 cl::init(""), cl::value_desc("prefix")); |
588 static cl::opt<bool> | 588 static cl::opt<bool> |
589 DisableInternal("external", | 589 DisableInternal("external", |
590 cl::desc("Disable 'internal' linkage type for testing")); | 590 cl::desc("Disable 'internal' linkage type for testing")); |
591 static cl::opt<bool> | 591 static cl::opt<bool> |
592 DisableTranslation("notranslate", cl::desc("Disable Subzero translation")); | 592 DisableTranslation("notranslate", cl::desc("Disable Subzero translation")); |
593 | 593 |
594 static cl::opt<bool> SubzeroTimingEnabled( | 594 static cl::opt<bool> SubzeroTimingEnabled( |
595 "timing", cl::desc("Enable breakdown timing of Subzero translation")); | 595 "timing", cl::desc("Enable breakdown timing of Subzero translation")); |
596 | 596 |
| 597 static cl::opt<NaClFileFormat> |
| 598 InputFileFormat( |
| 599 "bitcode-format", |
| 600 cl::desc("Define format of input file:"), |
| 601 cl::values( |
| 602 clEnumValN(LLVMFormat, "llvm", "LLVM file (default)"), |
| 603 clEnumValN(PNaClFormat, "pnacl", "PNaCl bitcode file"), |
| 604 clEnumValEnd), |
| 605 cl::init(LLVMFormat)); |
| 606 |
597 int main(int argc, char **argv) { | 607 int main(int argc, char **argv) { |
598 cl::ParseCommandLineOptions(argc, argv); | 608 cl::ParseCommandLineOptions(argc, argv); |
599 | 609 |
600 // Parse the input LLVM IR file into a module. | 610 // Parse the input LLVM IR file into a module. |
601 SMDiagnostic Err; | 611 SMDiagnostic Err; |
602 Module *Mod; | 612 Module *Mod; |
603 | 613 |
604 { | 614 { |
605 Ice::Timer T; | 615 Ice::Timer T; |
606 Mod = ParseIRFile(IRFilename, Err, getGlobalContext()); | 616 Mod = NaClParseIRFile(IRFilename, InputFileFormat, Err, getGlobalContext()); |
607 | 617 |
608 if (SubzeroTimingEnabled) { | 618 if (SubzeroTimingEnabled) { |
609 std::cerr << "[Subzero timing] IR Parsing: " << T.getElapsedSec() | 619 std::cerr << "[Subzero timing] IR Parsing: " << T.getElapsedSec() |
610 << " sec\n"; | 620 << " sec\n"; |
611 } | 621 } |
612 } | 622 } |
613 | 623 |
614 if (!Mod) { | 624 if (!Mod) { |
615 Err.print(argv[0], errs()); | 625 Err.print(argv[0], errs()); |
616 return 1; | 626 return 1; |
(...skipping 29 matching lines...) Expand all Loading... |
646 << " sec\n"; | 656 << " sec\n"; |
647 } | 657 } |
648 | 658 |
649 if (DisableTranslation) { | 659 if (DisableTranslation) { |
650 Func->dump(); | 660 Func->dump(); |
651 } | 661 } |
652 } | 662 } |
653 | 663 |
654 return 0; | 664 return 0; |
655 } | 665 } |
OLD | NEW |