test domtree function %test(i32) { ebb0(v0: i32): brz v0, ebb1 ; dominates: ebb1 ebb3 ebb4 ebb5 jump ebb2 ; dominates: ebb2 ebb1: jump ebb3 ebb2: brz v0, ebb4 jump ebb5 ebb3: jump ebb4 ebb4: brz v0, ebb3 jump ebb5 ebb5: brz v0, ebb4 return } ; Fall-through-first, prune-at-source DFT: ; ; ebb0 { ; ebb0:brz v0, ebb1 { ; ebb0:jump ebb2 { ; ebb2 { ; ebb2:brz v2, ebb2 - ; ebb2:brz v3, ebb1 - ; ebb2:brz v4, ebb4 { ; ebb2: jump ebb5 { ; ebb5 {} ; } ; ebb4 {} ; } ; } ebb2 ; } ; ebb1 { ; ebb1:jump ebb3 { ; ebb3 {} ; } ; } ebb1 ; } ; } ebb0 ; ; check: cfg_postorder: ; sameln: ebb5 ; sameln: ebb3 ; sameln: ebb4 ; sameln: ebb2 ; sameln: ebb1 ; sameln: ebb0 ; check: domtree_preorder { ; nextln: ebb0: ebb1 ebb2 ebb4 ebb3 ebb5 ; nextln: ebb1: ; nextln: ebb2: ; nextln: ebb4: ; nextln: ebb3: ; nextln: ebb5: ; nextln: } function %loop2(i32) system_v { ebb0(v0: i32): brz v0, ebb1 ; dominates: ebb1 ebb3 ebb4 ebb5 jump ebb2 ; dominates: ebb2 ebb1: jump ebb3 ebb2: brz v0, ebb4 jump ebb5 ebb3: jump ebb4 ebb4: brz v0, ebb3 brnz v0, ebb5 jump ebb6 ; dominates: ebb6 ebb5: brz v0, ebb4 trap user0 ebb6: jump ebb7 ; dominates: ebb7 ebb7: return } ; check: cfg_postorder: ; sameln: ebb5 ; sameln: ebb7 ; sameln: ebb6 ; sameln: ebb3 ; sameln: ebb4 ; sameln: ebb2 ; sameln: ebb1 ; sameln: ebb0 ; check: domtree_preorder { ; nextln: ebb0: ebb1 ebb2 ebb4 ebb3 ebb5 ; nextln: ebb1: ; nextln: ebb2: ; nextln: ebb4: ebb6 ; nextln: ebb6: ebb7 ; nextln: ebb7: ; nextln: ebb3: ; nextln: ebb5: ; nextln: }