Carlos Sánchez de La Lama
2012-Sep-07 19:23 UTC
[LLVMdev] FastRegAlloc (wrongly?) marking physregs as free
Hi all, I am using the fast register allocator on a partially allocated machine function. I have noticed reserved registers (i.e. liveins) are marked as free after first use (in usePhysReg(..) method). This seems an error to me as a livein might be still used later in the basic block. As I understand this should check for isKill() before marking it as free, but I see it even *sets* the kill state on that operand. I feel this might be because FastRegAlloc is prepared to work on MI code with no proper def/kill markers. Is this behaviour intended? Otherwise should not be complex to fix. BR Carlos PD: in case someone wonders, the reason I can not use one of the other register allocators is that my MachineInst level code is heavily preprocessed and is no longer SSA at this point, which prevents running LiveVariables on it.
Reasonably Related Threads
- [LLVMdev] [llvm-commits] [PATCH] MachineRegisterInfo: Don't emit the same livein copy more than once
- [LLVMdev] Trouble with virtual registers
- [LLVMdev] [llvm-commits] [PATCH] MachineRegisterInfo: Don't emit the same livein copy more than once
- [LLVMdev] [PATCH] Get DCE to consider livein PhysRegs to successor basic blocks.
- [LLVMdev] [PATCH] Get DCE to consider livein PhysRegs to successor basic blocks.