[LLVMdev] Live intervals and aliasing registers problem
Christopher Lamb
christopher.lamb at gmail.com
Mon Mar 26 17:50:11 PDT 2007
I'm having trouble with overlapping intervals for vector registers.
How are intervals for registers that both alias to the same larger
register intended to be handled?
To demonstrate this problem you can use a minor addition to the Sparc
register description.
Add this to the SparcRegisterInfo.td at line 68:
// Rtest
class Rtest<bits<5> num, string n, list<Register> aliases> :
SparcReg<n> {
let Num = num;
let Aliases = aliases;
}
def ALIASING : Rtest<0, "Rtest0", [I0, I1]>, DwarfRegNum<0>;
Then attempt to build the attached llvm file using 'llvm-as <
vecinterval.ll | llc -debug -march=sparc vecinterval -f -o
vecinterval.s'
I get the following error:
********** COMPUTING LIVE INTERVALS **********
********** Function: _Z3fooff
entry:
livein register: I0 killed +[0,2:0)
livein register: Rtest0 killed +[0,2:0)
livein register: I1 killed +[0,6:0)
livein register: Rtest0 killed +[0,2:1)
lib/CodeGen/LiveInterval.cpp:189: failed assertion `B->end <= Start
&& "Cannot overlap two LiveRanges with differing ValID's" " (did you
def the same reg twice in a MachineInstr?)"'
Abort trap
--
Christopher Lamb
christopher.lamb at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: vecinterval.ll
Type: application/octet-stream
Size: 417 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20070326/1a95f9a2/attachment.obj>
-------------- next part --------------
More information about the llvm-dev
mailing list