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.
105 lines
2.0 KiB
Plaintext
105 lines
2.0 KiB
Plaintext
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: }
|