[clang] fix: replace report_fatal_error with Diags and exit (PR #147959)

Fangrui Song via cfe-commits cfe-commits at lists.llvm.org
Sat Jul 19 10:27:33 PDT 2025


================
@@ -30,11 +30,16 @@ SanitizerSpecialCaseList::create(const std::vector<std::string> &Paths,
 
 std::unique_ptr<SanitizerSpecialCaseList>
 SanitizerSpecialCaseList::createOrDie(const std::vector<std::string> &Paths,
-                                      llvm::vfs::FileSystem &VFS) {
+                                      llvm::vfs::FileSystem &VFS,
+                                      DiagnosticsEngine &Diags) {
   std::string Error;
   if (auto SSCL = create(Paths, VFS, Error))
     return SSCL;
-  llvm::report_fatal_error(StringRef(Error));
+  unsigned DiagID = Diags.getCustomDiagID(clang::DiagnosticsEngine::Error,
+                                          "failed to load NoSanitize file: %0");
----------------
MaskRay wrote:

I agree that ideally this error reporting is delayed.

createOrDie is called by NoSanitizeList::NoSanitizeList, which is called by ASTContext::ASTContext. To report a proper diagnostic, we need to remove these calls from ctors to an init function.

https://github.com/llvm/llvm-project/pull/147959


More information about the cfe-commits mailing list