* Rework the blockorder module to reuse the dom tree's cfg postorder * Update domtree tests * Treat br_table with an empty jump table as multiple block exits * Bless tests * Change branch_idx to succ_idx and fix the comment
128 lines
1.8 KiB
Plaintext
128 lines
1.8 KiB
Plaintext
test compile precise-output
|
|
target s390x
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
;; TRAP/RESUMABLE_TRAP
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
function %trap() {
|
|
block0:
|
|
trap user0
|
|
}
|
|
|
|
; VCode:
|
|
; block0:
|
|
; trap
|
|
;
|
|
; Disassembled:
|
|
; block0: ; offset 0x0
|
|
; .byte 0x00, 0x00 ; trap: user0
|
|
|
|
function %resumable_trap() {
|
|
block0:
|
|
trap user0
|
|
}
|
|
|
|
; VCode:
|
|
; block0:
|
|
; trap
|
|
;
|
|
; Disassembled:
|
|
; block0: ; offset 0x0
|
|
; .byte 0x00, 0x00 ; trap: user0
|
|
|
|
function %trapz(i64) {
|
|
block0(v0: i64):
|
|
v1 = iconst.i64 42
|
|
v2 = icmp eq v0, v1
|
|
trapz v2, user0
|
|
return
|
|
}
|
|
|
|
; VCode:
|
|
; block0:
|
|
; clgfi %r2, 42
|
|
; jge label2 ; jg label1
|
|
; block2:
|
|
; br %r14
|
|
; block1:
|
|
; trap
|
|
;
|
|
; Disassembled:
|
|
; block0: ; offset 0x0
|
|
; clgfi %r2, 0x2a
|
|
; jgne 0xe
|
|
; block1: ; offset 0xc
|
|
; br %r14
|
|
; block2: ; offset 0xe
|
|
; .byte 0x00, 0x00 ; trap: user0
|
|
|
|
function %trapnz(i64) {
|
|
block0(v0: i64):
|
|
v1 = iconst.i64 42
|
|
v2 = icmp eq v0, v1
|
|
trapnz v2, user0
|
|
return
|
|
}
|
|
|
|
; VCode:
|
|
; block0:
|
|
; clgfi %r2, 42
|
|
; jge label2 ; jg label1
|
|
; block1:
|
|
; br %r14
|
|
; block2:
|
|
; trap
|
|
;
|
|
; Disassembled:
|
|
; block0: ; offset 0x0
|
|
; clgfi %r2, 0x2a
|
|
; jge 0xe
|
|
; block1: ; offset 0xc
|
|
; br %r14
|
|
; block2: ; offset 0xe
|
|
; .byte 0x00, 0x00 ; trap: user0
|
|
|
|
function %resumable_trapnz(i64) {
|
|
block0(v0: i64):
|
|
v1 = iconst.i64 42
|
|
v2 = icmp eq v0, v1
|
|
trapnz v2, user0
|
|
return
|
|
}
|
|
|
|
; VCode:
|
|
; block0:
|
|
; clgfi %r2, 42
|
|
; jge label2 ; jg label1
|
|
; block1:
|
|
; br %r14
|
|
; block2:
|
|
; trap
|
|
;
|
|
; Disassembled:
|
|
; block0: ; offset 0x0
|
|
; clgfi %r2, 0x2a
|
|
; jge 0xe
|
|
; block1: ; offset 0xc
|
|
; br %r14
|
|
; block2: ; offset 0xe
|
|
; .byte 0x00, 0x00 ; trap: user0
|
|
|
|
function %h() {
|
|
block0:
|
|
debugtrap
|
|
return
|
|
}
|
|
|
|
; VCode:
|
|
; block0:
|
|
; debugtrap
|
|
; br %r14
|
|
;
|
|
; Disassembled:
|
|
; block0: ; offset 0x0
|
|
; .byte 0x00, 0x01
|
|
; br %r14
|
|
|