luaur_bytecode/methods/
bytecode_graph_parser_is_unreachable.rs1use crate::enums::bc_block_edge_kind::BcBlockEdgeKind;
2use crate::records::bc_op::BcOp;
3use crate::records::bytecode_graph_parser::BytecodeGraphParser;
4
5pub fn bytecode_graph_parser_is_unreachable(
6 self_: &mut BytecodeGraphParser<'_>,
7 block_op: BcOp,
8) -> bool {
9 if block_op == self_.func.entry_block {
10 return false;
11 }
12
13 let predecessors = self_.func.block_op(block_op).predecessors.clone();
14 for pred in &predecessors {
15 if pred.kind == BcBlockEdgeKind::Loop {
16 continue;
17 }
18 if !bytecode_graph_parser_is_unreachable(self_, pred.target) {
19 return false;
20 }
21 }
22
23 true
24}