[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.

Thanks,
-Krzysztof


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



More information about the llvm-dev mailing list