Stream: git-cranelift

Topic: cranelift / Issue #163 Spillling for branch instructions ...


view this post on Zulip GitHub (Feb 28 2020 at 23:19):

alexcrichton transferred Issue #163:

There seems to be a problems with branch instructions that take register operands from a constrained register class. The problem is the global values live across the branch into the destination EBB. These values can't be temporarily moved because the destination EBB expects them in their global registers.

Normally, the spiller will make sure that there are enough free registers for the branch instruction's own operands, but it can't guarantee that there are registers free in a constrained register class.

An example is an Intel brnz.b1 instruction whose controlling b1 operand is constrained to the ABCD register class. We can't currently guarantee the live-ins for the destination EBB are not taking up the whole ABCD register class.


Last updated: Nov 22 2024 at 16:03 UTC