feat: add constant folding and dead code elimination passes

This commit is contained in:
2026-04-21 22:28:30 +02:00
parent 3e0b5c5b00
commit 0162d5b845
5 changed files with 487 additions and 6 deletions
+9 -1
View File
@@ -5,6 +5,8 @@ use clap::Parser as ClapParser;
use crate::frontend::parser::Parser;
use crate::frontend::sema::Sema;
use crate::middle::builder::MirBuilder;
use crate::middle::dce::eliminate_dead_code;
use crate::middle::fold::fold_constants;
pub mod backend;
pub mod frontend;
@@ -57,7 +59,13 @@ fn main() {
exit(1);
}
let mir_module = MirBuilder::build(&typed_module);
let mut mir_module = MirBuilder::build(&typed_module);
fold_constants(&mut mir_module);
let warnings = eliminate_dead_code(&mut mir_module);
for warning in warnings {
eprintln!("Warning: {} at {:?}", warning.message, warning.span);
}
let backend = CraneliftBackend::new();
let (ir, obj_bytes) = backend.compile_module(&mir_module);