When lowering br_table to branches, delete the old jump tables.
This prevents codegen from emitting unused readonly data.
This commit is contained in:
committed by
Benjamin Bouvier
parent
997424a4c5
commit
bdcc06eb15
40
cranelift/filetests/legalizer/br_table_cond.clif
Normal file
40
cranelift/filetests/legalizer/br_table_cond.clif
Normal file
@@ -0,0 +1,40 @@
|
||||
test legalizer
|
||||
set probestack_enabled=false
|
||||
set jump_tables_enabled=false
|
||||
target x86_64
|
||||
|
||||
; Test that when jump_tables_enables is false, all jump tables are eliminated.
|
||||
|
||||
function u0:0(i64 vmctx) baldrdash {
|
||||
gv0 = vmctx
|
||||
gv1 = iadd_imm.i64 gv0, 48
|
||||
jt0 = jump_table [ebb2, ebb2, ebb7]
|
||||
jt1 = jump_table [ebb8, ebb8]
|
||||
|
||||
ebb0(v0: i64):
|
||||
jump ebb5
|
||||
|
||||
ebb5:
|
||||
v1 = global_value.i64 gv1
|
||||
v2 = load.i64 v1
|
||||
trapnz v2, interrupt
|
||||
v3 = iconst.i32 0
|
||||
br_table v3, ebb3, jt0
|
||||
|
||||
ebb7:
|
||||
v4 = iconst.i32 0
|
||||
br_table v4, ebb3, jt1
|
||||
|
||||
ebb8:
|
||||
jump ebb5
|
||||
|
||||
ebb3:
|
||||
jump ebb2
|
||||
|
||||
ebb2:
|
||||
jump ebb1
|
||||
|
||||
ebb1:
|
||||
fallthrough_return
|
||||
}
|
||||
; not: jump_table
|
||||
@@ -110,6 +110,11 @@ pub fn legalize_function(func: &mut ir::Function, cfg: &mut ControlFlowGraph, is
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Now that we've lowered all br_tables, we don't need the jump tables anymore.
|
||||
if !isa.flags().jump_tables_enabled() {
|
||||
pos.func.jump_tables.clear();
|
||||
}
|
||||
}
|
||||
|
||||
// Include legalization patterns that were generated by `gen_legalizer.py` from the `XForms` in
|
||||
|
||||
Reference in New Issue
Block a user