@@ -286,24 +286,6 @@ static CodeGenOptLevel GetCodeGenOptLevel() {
286286 return static_cast <CodeGenOptLevel>(unsigned (CodeGenOptLevelCL));
287287}
288288
289- // Returns the TargetMachine instance or zero if no triple is provided.
290- static TargetMachine* GetTargetMachine (Triple TheTriple, StringRef CPUStr,
291- StringRef FeaturesStr,
292- const TargetOptions &Options) {
293- std::string Error;
294- const Target *TheTarget =
295- TargetRegistry::lookupTarget (codegen::getMArch (), TheTriple, Error);
296- // Some modules don't specify a triple, and this is okay.
297- if (!TheTarget) {
298- return nullptr ;
299- }
300-
301- return TheTarget->createTargetMachine (
302- TheTriple.getTriple (), codegen::getCPUStr (), codegen::getFeaturesStr (),
303- Options, codegen::getExplicitRelocModel (),
304- codegen::getExplicitCodeModel (), GetCodeGenOptLevel ());
305- }
306-
307289struct TimeTracerRAII {
308290 TimeTracerRAII (StringRef ProgramName) {
309291 if (TimeTrace)
@@ -410,6 +392,7 @@ static bool shouldForceLegacyPM() {
410392//
411393int main (int argc, char **argv) {
412394 InitLLVM X (argc, argv);
395+ ExitOnError ExitOnErr (std::string (argv[0 ]) + " : error: " );
413396
414397 // Enable debug stream buffering.
415398 EnableDebugBuffering = true ;
@@ -611,23 +594,19 @@ int main(int argc, char **argv) {
611594
612595 Triple ModuleTriple (M->getTargetTriple ());
613596 std::string CPUStr, FeaturesStr;
614- TargetMachine *Machine = nullptr ;
615- const TargetOptions Options =
616- codegen::InitTargetOptionsFromCodeGenFlags (ModuleTriple);
617-
597+ std::unique_ptr<TargetMachine> TM;
618598 if (ModuleTriple.getArch ()) {
619599 CPUStr = codegen::getCPUStr ();
620600 FeaturesStr = codegen::getFeaturesStr ();
621- Machine = GetTargetMachine (ModuleTriple, CPUStr, FeaturesStr, Options);
601+ TM = ExitOnErr (codegen::createTargetMachineForTriple (ModuleTriple.str (),
602+ GetCodeGenOptLevel ()));
622603 } else if (ModuleTriple.getArchName () != " unknown" &&
623604 ModuleTriple.getArchName () != " " ) {
624605 errs () << argv[0 ] << " : unrecognized architecture '"
625606 << ModuleTriple.getArchName () << " ' provided.\n " ;
626607 return 1 ;
627608 }
628609
629- std::unique_ptr<TargetMachine> TM (Machine);
630-
631610 // Override function attributes based on CPUStr, FeaturesStr, and command line
632611 // flags.
633612 codegen::setFunctionAttributes (CPUStr, FeaturesStr, *M);
0 commit comments