Split edges to have a block to add regmove & copy instructions.

When using basic block instructions cannot be added in-between jump instructions which are ending basic blocks. These changes create extra basic blocks such that extra space is available for the spilling and moving registers where they are expected.
This commit is contained in:
Nicolas B. Pierron
2019-08-30 18:44:35 +02:00
committed by GitHub
parent bb87f1a54a
commit 381578311c
10 changed files with 529 additions and 3 deletions

View File

@@ -318,7 +318,7 @@ impl Context {
/// Run the register allocator.
pub fn regalloc(&mut self, isa: &dyn TargetIsa) -> CodegenResult<()> {
self.regalloc
.run(isa, &mut self.func, &self.cfg, &mut self.domtree)
.run(isa, &mut self.func, &mut self.cfg, &mut self.domtree)
}
/// Insert prologue and epilogues after computing the stack frame layout.