AArch64: don't assert inst within worst-case size when island emitted. (#4627)
We assert after emitting each instruction that its size was less than the "worst-case size", which is used to determine when we need to proactively emit an island so pending branch fixups don't go out of bounds. However, the `EmitIsland` pseudo-inst itself can cause an arbitrarily large island to be emitted; this should not have to fit within the worst-case size (because island size is explicitly accounted for by the threshold computation). This PR fixes the assert accordingly. Fixes #4626.
This commit is contained in:
@@ -3140,7 +3140,13 @@ impl MachInstEmit for Inst {
|
||||
}
|
||||
|
||||
let end_off = sink.cur_offset();
|
||||
debug_assert!((end_off - start_off) <= Inst::worst_case_size());
|
||||
debug_assert!(
|
||||
(end_off - start_off) <= Inst::worst_case_size()
|
||||
|| matches!(self, Inst::EmitIsland { .. }),
|
||||
"Worst case size exceed for {:?}: {}",
|
||||
self,
|
||||
end_off - start_off
|
||||
);
|
||||
|
||||
state.clear_post_insn();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user