[ixp1200] incorrect register live ranges
Cyrus Hall
hallcp at cs.colorado.edu
Tue Jul 8 16:02:15 EDT 2003
I'm an experiencing what feels like register mis-allocation by uca. I
allocate several registers, branch to another segment, allocate several
more, and the newly allocated virtual registers end up being allocated
in the same physical registers as the virts allocated in before the
branch. I'm using an unconditional branch (br) to jump to the second
segment (.segment 1) - same to come back to segment 0.
IE:
.segment 0
.local reg1
immed[reg1, 1]
br[label#]
done#:
ctx_arb[kill]
.endlocal
.segment 1
label#:
.local reg2
immed[reg2, 2] //ends up overwriting reg1
br[done#]
.endlocal
Does the compiler not calculate virtual live ranges across segments? Or
is this a silly .local\.endlocal problem, and the compiler doesn't
follow the live range on a branch outside a .local section?
thanks,
Cy
More information about the ixp1200
mailing list