To keep cross-compiling straightforward, Cretonne shouldn't have any behavior that depends on the host. This renames the "Native" calling convention to "SystemV", which has a defined meaning for each target, so that it's clear that the calling convention doesn't change depending on what host Cretonne is running on.
80 lines
1.4 KiB
Plaintext
80 lines
1.4 KiB
Plaintext
test domtree
|
|
|
|
function %loop1(i32) {
|
|
ebb0(v0: i32):
|
|
brz v0, ebb1 ; dominates: ebb1 ebb6
|
|
brnz v0, ebb2 ; dominates: ebb2 ebb9
|
|
jump ebb3 ; dominates: ebb3
|
|
ebb1:
|
|
jump ebb6
|
|
ebb2:
|
|
brz v0, ebb4 ; dominates: ebb4 ebb7 ebb8
|
|
jump ebb5 ; dominates: ebb5
|
|
ebb3:
|
|
jump ebb9
|
|
ebb4:
|
|
brz v0, ebb4
|
|
brnz v0, ebb6
|
|
jump ebb7
|
|
ebb5:
|
|
brz v0, ebb7
|
|
brnz v0, ebb8
|
|
jump ebb9
|
|
ebb6:
|
|
return
|
|
ebb7:
|
|
jump ebb8
|
|
ebb8:
|
|
return
|
|
ebb9:
|
|
return
|
|
}
|
|
|
|
; 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) 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
|
|
jump ebb5
|
|
ebb5:
|
|
brz v0, ebb4
|
|
return
|
|
}
|
|
; 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: }
|