From 35da24adfd33102929c08f094f98568f7d583343 Mon Sep 17 00:00:00 2001 From: Matthieu Felix Date: Wed, 11 Nov 2020 23:27:25 -0500 Subject: [PATCH 1/2] Specify unsealed / unfilled blocks --- cranelift/frontend/src/frontend.rs | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/cranelift/frontend/src/frontend.rs b/cranelift/frontend/src/frontend.rs index 3b9263301a..c44f2d11ba 100644 --- a/cranelift/frontend/src/frontend.rs +++ b/cranelift/frontend/src/frontend.rs @@ -459,19 +459,23 @@ impl<'a> FunctionBuilder<'a> { /// for another function. pub fn finalize(&mut self) { // Check that all the `Block`s are filled and sealed. - debug_assert!( - self.func_ctx.blocks.iter().all( - |(block, block_data)| block_data.pristine || self.func_ctx.ssa.is_sealed(block) - ), - "all blocks should be sealed before dropping a FunctionBuilder" - ); - debug_assert!( - self.func_ctx - .blocks - .values() - .all(|block_data| block_data.pristine || block_data.filled), - "all blocks should be filled before dropping a FunctionBuilder" - ); + #[cfg(debug_assertions)] + { + for (block, block_data) in self.func_ctx.blocks.iter() { + if !(block_data.pristine || self.func_ctx.ssa.is_sealed(block)) { + panic!( + "FunctionBuilder finalized, but block {} is not sealed", + block + ); + } + if !(block_data.pristine || block_data.filled) { + panic!( + "FunctionBuilder finalized, but block {} is not filled", + block + ); + } + } + } // In debug mode, check that all blocks are valid basic blocks. #[cfg(debug_assertions)] From 27f3307f24621a317fc73d1bb1d46fd55850288d Mon Sep 17 00:00:00 2001 From: Matt Date: Sat, 21 Nov 2020 00:03:41 -0500 Subject: [PATCH 2/2] Replace if + panic! with assert! Co-authored-by: Nick Fitzgerald --- cranelift/frontend/src/frontend.rs | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/cranelift/frontend/src/frontend.rs b/cranelift/frontend/src/frontend.rs index c44f2d11ba..07d8d7819e 100644 --- a/cranelift/frontend/src/frontend.rs +++ b/cranelift/frontend/src/frontend.rs @@ -462,18 +462,16 @@ impl<'a> FunctionBuilder<'a> { #[cfg(debug_assertions)] { for (block, block_data) in self.func_ctx.blocks.iter() { - if !(block_data.pristine || self.func_ctx.ssa.is_sealed(block)) { - panic!( - "FunctionBuilder finalized, but block {} is not sealed", - block - ); - } - if !(block_data.pristine || block_data.filled) { - panic!( - "FunctionBuilder finalized, but block {} is not filled", - block - ); - } + assert!( + block_data.pristine || self.func_ctx.ssa.is_sealed(block), + "FunctionBuilder finalized, but block {} is not sealed", + block, + ); + assert!( + block_data.pristine || block_data.filled, + "FunctionBuilder finalized, but block {} is not filled", + block, + ); } }