diff --git a/benches/compilation_benchmark.rs b/benches/compilation_benchmark.rs index 1b11699..25a6964 100644 --- a/benches/compilation_benchmark.rs +++ b/benches/compilation_benchmark.rs @@ -98,7 +98,8 @@ fn bench_optimizer(c: &mut Criterion) { b.iter(|| { let mut prog_copy = black_box(program.clone()); let mut optimizer = Optimizer::new(OptimizationLevel::None); - black_box(optimizer.optimize(&mut prog_copy).unwrap()); + optimizer.optimize(&mut prog_copy).unwrap(); + black_box(()); }) }); @@ -106,7 +107,8 @@ fn bench_optimizer(c: &mut Criterion) { b.iter(|| { let mut prog_copy = black_box(program.clone()); let mut optimizer = Optimizer::new(OptimizationLevel::Moderate); - black_box(optimizer.optimize(&mut prog_copy).unwrap()); + optimizer.optimize(&mut prog_copy).unwrap(); + black_box(()); }) }); @@ -114,7 +116,8 @@ fn bench_optimizer(c: &mut Criterion) { b.iter(|| { let mut prog_copy = black_box(program.clone()); let mut optimizer = Optimizer::new(OptimizationLevel::Aggressive); - black_box(optimizer.optimize(&mut prog_copy).unwrap()); + optimizer.optimize(&mut prog_copy).unwrap(); + black_box(()); }) }); } diff --git a/src/codegen.rs b/src/codegen.rs index 34c79b9..9ad6a30 100644 --- a/src/codegen.rs +++ b/src/codegen.rs @@ -1267,7 +1267,7 @@ impl CodeGenerator { match self.target { Target::I386 | Target::Amd64 => { - self.emit_line(&format!(" test eax, eax")); + self.emit_line(" test eax, eax"); self.emit_line(&format!(" {} {}", instruction, label)); } Target::Arm64 => { diff --git a/src/compiler.rs b/src/compiler.rs index fcd32f9..acdc800 100644 --- a/src/compiler.rs +++ b/src/compiler.rs @@ -119,7 +119,7 @@ impl Compiler { let preprocessed = self.preprocess(&source, input_file).await?; fs::write(&output_path, preprocessed) .await - .map_err(|e| AleccError::IoError(e))?; + .map_err(AleccError::IoError)?; return Ok(output_path); } else { self.preprocess(&source, input_file).await? @@ -149,7 +149,7 @@ impl Compiler { let output_path = self.get_output_path(input_file, "s")?; fs::write(&output_path, assembly) .await - .map_err(|e| AleccError::IoError(e))?; + .map_err(AleccError::IoError)?; return Ok(output_path); } @@ -157,7 +157,7 @@ impl Compiler { let asm_path = self.create_temp_file("s")?; fs::write(&asm_path, assembly) .await - .map_err(|e| AleccError::IoError(e))?; + .map_err(AleccError::IoError)?; // Assemble let obj_path = self.assemble_file(&asm_path).await?; @@ -215,9 +215,9 @@ impl Compiler { // Skip malformed include } } - } else if trimmed.starts_with("#define") { + } else if let Some(stripped) = trimmed.strip_prefix("#define") { // Handle #define (simplified) - let parts: Vec<&str> = trimmed[7..].split_whitespace().collect(); + let parts: Vec<&str> = stripped.split_whitespace().collect(); if !parts.is_empty() { let key = parts[0].to_string(); let value = if parts.len() > 1 { @@ -330,17 +330,17 @@ impl Compiler { match self.target { Target::I386 => { - command.args(&["--32"]); + command.args(["--32"]); } Target::Amd64 => { - command.args(&["--64"]); + command.args(["--64"]); } Target::Arm64 => { // Default options for aarch64 } } - command.args(&[ + command.args([ "-o", &obj_path.to_string_lossy(), &asm_file.to_string_lossy(), diff --git a/src/linker.rs b/src/linker.rs index 8669b76..98c1cf9 100644 --- a/src/linker.rs +++ b/src/linker.rs @@ -218,7 +218,7 @@ impl Linker { Ok(command) } - fn add_standard_startup_files(&self, _command: &mut Vec) -> Result<()> { + fn add_standard_startup_files(&self, _command: &mut [String]) -> Result<()> { // Skip startup files when we have our own _start // This prevents conflicts with our custom _start implementation Ok(()) @@ -257,7 +257,7 @@ impl Linker { fn get_gcc_lib_path(&self) -> Result { // Try to find GCC library path let output = Command::new("gcc") - .args(&["-print-libgcc-file-name"]) + .args(["-print-libgcc-file-name"]) .output() .map_err(|e| AleccError::LinkerError { message: format!("Failed to find GCC library path: {}", e),