[LLVMdev] Linux/ppc backend
Evan Cheng
evan.cheng at apple.com
Wed Feb 14 00:06:58 PST 2007
On Feb 13, 2007, at 9:49 AM, Nicolas Geoffray wrote:
> Hi Chris,
>
>>> It is marked callee saved. Because when it is not needed as frame
>>> pointer it is used like an ordinary register. But when it is used as
>>> frame pointer, the prologue and epilogue change its value, but the
>>> algorithm in llvm that finds clobbered register does not select it.
>>>
>>
>> Okay, I'm not sure. If you describe the constraints better,
>> perhaps Jim
>> or Evan will have an idea :)
>>
> Well i believe the algorithm that finds clobbered registers does not
> look at the epilogue
> and prologue, and therefore does not select R31.
> Maybe all I need to do is to explicitly add R31 as a clobbered
> register
> when it is used
> as a frame pointer. But I need some help to do that.
I am still sure if I understand. R31 is the PPC frame pointer. Are
you saying that if frame pointer cannot be eliminated (i.e. hasFP())
is true, you want to spill it to a particular stack slot? You can
override the default
MRegisterInfo::processFunctionBeforeCalleeSavedScan() implementation
and force it to be spilled. Take a look at ARMRegisterInfo.cpp for an
example.
Evan
>
> Thx,
> Nicolas
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
More information about the llvm-dev
mailing list