diff --git a/clang/include/clang/Basic/DiagnosticFrontendKinds.td b/clang/include/clang/Basic/DiagnosticFrontendKinds.td index 2fd2ae434d7c5..254b13be005bb 100644 --- a/clang/include/clang/Basic/DiagnosticFrontendKinds.td +++ b/clang/include/clang/Basic/DiagnosticFrontendKinds.td @@ -115,6 +115,8 @@ def err_fe_unable_to_load_plugin : Error< "unable to load plugin '%0': '%1'">; def err_fe_unable_to_create_target : Error< "unable to create target: '%0'">; +def err_fe_unable_to_create_subtarget : Error< + "unable to create subtarget: '%0'%select{ with features '%2'|}1">; def err_fe_unable_to_interface_with_target : Error< "unable to interface with target machine">; def err_fe_unable_to_open_output : Error< diff --git a/clang/tools/driver/cc1as_main.cpp b/clang/tools/driver/cc1as_main.cpp index 5c30de33c7b46..dc0f74957774a 100644 --- a/clang/tools/driver/cc1as_main.cpp +++ b/clang/tools/driver/cc1as_main.cpp @@ -480,7 +480,10 @@ static bool ExecuteAssemblerImpl(AssemblerInvocation &Opts, std::unique_ptr STI( TheTarget->createMCSubtargetInfo(Opts.Triple, Opts.CPU, FS)); - assert(STI && "Unable to create subtarget info!"); + if (!STI) { + return Diags.Report(diag::err_fe_unable_to_create_subtarget) + << Opts.CPU << FS.empty() << FS; + } MCContext Ctx(Triple(Opts.Triple), MAI.get(), MRI.get(), STI.get(), &SrcMgr, &MCOptions);