Move default blocks into jump tables (#5756)
Move the default block off of the br_table instrution, and into the JumpTable that it references.
This commit is contained in:
@@ -2942,7 +2942,7 @@
|
||||
|
||||
;; Rules for `br_table` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(rule (lower_branch (br_table idx @ (value_type ty) _ _) (jump_table_targets default_target jt_targets))
|
||||
(rule (lower_branch (br_table idx @ (value_type ty) _) (jump_table_targets default_target jt_targets))
|
||||
(emit_side_effect (jmp_table_seq ty idx default_target jt_targets)))
|
||||
|
||||
;; Rules for `select_spectre_guard` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
@@ -408,11 +408,10 @@ mod test {
|
||||
let mut pos = FuncCursor::new(&mut func);
|
||||
|
||||
pos.insert_block(bb0);
|
||||
let mut jt_data = JumpTableData::new();
|
||||
jt_data.push_entry(bb1);
|
||||
jt_data.push_entry(bb2);
|
||||
let jt = pos.func.create_jump_table(jt_data);
|
||||
pos.ins().br_table(arg0, bb3, jt);
|
||||
let jt = pos
|
||||
.func
|
||||
.create_jump_table(JumpTableData::new(bb3, vec![bb1, bb2]));
|
||||
pos.ins().br_table(arg0, jt);
|
||||
|
||||
pos.insert_block(bb1);
|
||||
let v1 = pos.ins().iconst(I32, 1);
|
||||
|
||||
Reference in New Issue
Block a user