diff options
| author | _ov4 <ov4@ov4.org> | 2026-10-22 15:02:29 +0000 |
|---|---|---|
| committer | _ov4 <ov4@ov4.org> | 2026-10-22 15:21:11 +0000 |
| commit | 353c38e23108856daa2c5d0e86443ac5136dcaa7 (patch) | |
| tree | bd899dd541543d6fa875d534a7d571b2baa087b0 /lib/CodeGen/CodeGen.cc | |
| parent | 9ef1cc2424e5afa21d3980b56046f5fb71bff89f (diff) | |
fix(codegen): skip IR verification after reported errors
Verify the module only when no error was reported, and let defineRecord
skip bad fields and still set the record body, marking it Invalid so
later missing-field lookups stay silent.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Diffstat (limited to 'lib/CodeGen/CodeGen.cc')
| -rw-r--r-- | lib/CodeGen/CodeGen.cc | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/lib/CodeGen/CodeGen.cc b/lib/CodeGen/CodeGen.cc index d81c4ff..e45a3db 100644 --- a/lib/CodeGen/CodeGen.cc +++ b/lib/CodeGen/CodeGen.cc @@ -364,7 +364,9 @@ void CodeGen::compile(const std::vector<SourceUnit> &Sources) { RuntimeChecker->emitStderr(Msg); Builder->CreateRet(ConstantInt::get(Type::getInt32Ty(*TheContext), 1)); - if (verifyModule(*TheModule, &errs())) { + // After a reported error the IR may be incomplete; verifying it would only + // dump noise behind the real diagnostic. + if (!HadError && verifyModule(*TheModule, &errs())) { errs() << cps::diagnosticPrefix(cps::Severity::Fatal, "") << "LLVM module verification failed\n"; HadError = true; } |
