[LLVMdev] Splitting live ranges of half-defined registers

Krzysztof Parzyszek kparzysz at codeaurora.org
Mon Jan 14 13:39:05 PST 2013

On 1/14/2013 3:16 PM, Jakob Stoklund Olesen wrote:
> On Jan 14, 2013, at 12:56 PM, Krzysztof Parzyszek <kparzysz at codeaurora.org> wrote:
>> My question is: is this something that was a part of the design?
> Yes, the register allocator only deals in full-width virtual registers, so any copies or spills created will operate on the full register.

I see.

Unfortunately, this is causing some customer code to fail in 
compilation.  The direct cause of the compilation failure is a complaint 
from the register scavenger in the scenario that I described in the 
first email.

This is actually very much related to the other problem I've reported a 
while ago ("wrong value out of predecessor")---splitting (and spilling) 
of partially defined registers was also key to the failure occurring.

I can deal with this locally, so it's not a major blocker for us.


Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, 
hosted by The Linux Foundation

More information about the llvm-dev mailing list