Dominator tree pre-order.

Add a DominatorTreePreorder data structure which can be initialized for
a DominatorTree and used for queries involving a pre-order of the
dominator tree.

Print out the pre-order and send it through filecheck in "test domtree"
file tests.
This commit is contained in:
Jakob Stoklund Olesen
2017-12-08 14:56:16 -08:00
parent 7d5f2f0404
commit a888b2a6f1
7 changed files with 281 additions and 6 deletions

View File

@@ -16,3 +16,10 @@ function %test(i32) {
; sameln: ebb3
; sameln: ebb1
; sameln: ebb0
; check: domtree_preorder {
; nextln: ebb0: ebb1
; nextln: ebb1: ebb3 ebb2
; nextln: ebb3:
; nextln: ebb2:
; nextln: }

View File

@@ -50,6 +50,15 @@ function %test(i32) {
; 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) native {
ebb0(v0: i32):
brz v0, ebb1 ; dominates: ebb1 ebb3 ebb4 ebb5
@@ -82,3 +91,14 @@ function %loop2(i32) native {
; 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: }

View File

@@ -1,6 +1,6 @@
test domtree
function %test(i32) {
function %loop1(i32) {
ebb0(v0: i32):
brz v0, ebb1 ; dominates: ebb1 ebb6
brnz v0, ebb2 ; dominates: ebb2 ebb9
@@ -30,7 +30,20 @@ function %test(i32) {
return
}
function %test(i32) native {
; check: domtree_preorder {
; nextln: ebb0: ebb1 ebb2 ebb6 ebb3 ebb9
; nextln: ebb1:
; nextln: ebb2: ebb4 ebb5 ebb7 ebb8
; nextln: ebb4:
; nextln: ebb5:
; nextln: ebb7:
; nextln: ebb8:
; nextln: ebb6:
; nextln: ebb3:
; nextln: ebb9:
; nextln: }
function %loop2(i32) native {
ebb0(v0: i32):
brz v0, ebb1 ; dominates: ebb1 ebb3 ebb4 ebb5
jump ebb2 ; dominates: ebb2
@@ -55,3 +68,12 @@ function %test(i32) native {
; 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: }

View File

@@ -31,3 +31,18 @@ function %test(i32) {
ebb11:
return
}
; check: domtree_preorder {
; nextln: ebb0: ebb1 ebb2 ebb3 ebb5
; nextln: ebb1: ebb4
; nextln: ebb4: ebb6 ebb7 ebb10
; nextln: ebb6: ebb8 ebb9 ebb11
; nextln: ebb8:
; nextln: ebb9:
; nextln: ebb11:
; nextln: ebb7:
; nextln: ebb10:
; nextln: ebb2:
; nextln: ebb3:
; nextln: ebb5:
; nextln: }

View File

@@ -39,3 +39,20 @@ function %test(i32) {
ebb13:
return
}
; check: domtree_preorder {
; nextln: ebb0: ebb13 ebb1
; nextln: ebb13:
; nextln: ebb1: ebb2 ebb3 ebb4 ebb5 ebb6 ebb7
; nextln: ebb2:
; nextln: ebb3:
; nextln: ebb4:
; nextln: ebb5:
; nextln: ebb6:
; nextln: ebb7: ebb8 ebb9 ebb10 ebb12 ebb11
; nextln: ebb8:
; nextln: ebb9:
; nextln: ebb10:
; nextln: ebb12:
; nextln: ebb11:
; nextln: }