From 3a96e99bd80e5928c729ff86681e6463b9884c46 Mon Sep 17 00:00:00 2001 From: Michael Gottesman Date: Tue, 30 Sep 2025 13:16:01 -0700 Subject: [PATCH] [sil-llvm-gen] Run Sema before we attempt to emit IR. --- lib/DriverTool/sil_llvm_gen_main.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/DriverTool/sil_llvm_gen_main.cpp b/lib/DriverTool/sil_llvm_gen_main.cpp index 07ef938778931..9dd80a627a36c 100644 --- a/lib/DriverTool/sil_llvm_gen_main.cpp +++ b/lib/DriverTool/sil_llvm_gen_main.cpp @@ -433,6 +433,15 @@ int sil_llvm_gen_main(ArrayRef argv, void *MainAddr) { desc.out = &outFile->getOS(); if (options.OutputKind == IRGenOutputKind::LLVMAssemblyBeforeOptimization) { + // We need to perform Sema here since IRGenRequest itself does not perform + // Sema (unlike OptimizedIRRequest). + CI.performSema(); + + // If Sema produced an error, exit early. + bool HadError = CI.getASTContext().hadError(); + if (HadError) + exit(-1); + auto generatedMod = evaluateOrFatal(eval, IRGenRequest{desc}); if (!generatedMod) return 1;