(
u: BasicBlock,
d: BasicBlock,
body: &Body<'_>,
path: &mut Vec<BasicBlock>,
visited: &mut BitSet<BasicBlock>,
paths: &mut Vec<Vec<BasicBlock>>,
)
| 338 | } |
| 339 | |
| 340 | fn find_path_recursive( |
| 341 | u: BasicBlock, |
| 342 | d: BasicBlock, |
| 343 | body: &Body<'_>, |
| 344 | path: &mut Vec<BasicBlock>, |
| 345 | visited: &mut BitSet<BasicBlock>, |
| 346 | paths: &mut Vec<Vec<BasicBlock>>, |
| 347 | ) { |
| 348 | visited.insert(u); |
| 349 | path.push(u); |
| 350 | if u == d { |
| 351 | // output |
| 352 | paths.push(path.clone()); |
| 353 | } else { |
| 354 | let data = &body[u]; |
| 355 | if let Some(ref term) = data.terminator { |
| 356 | for succ in term.successors() { |
| 357 | if !visited.contains(succ) { |
| 358 | find_path_recursive(succ, d, body, path, visited, paths); |
| 359 | } |
| 360 | } |
| 361 | } |
| 362 | } |
| 363 | path.pop(); |
| 364 | visited.remove(u); |
| 365 | } |
no test coverage detected