[LLVMdev] Selecting FrameIndex

Bruno Cardoso Lopes bruno.cardoso at gmail.com
Wed Mar 18 12:49:03 PDT 2009


Hi,

On Wed, Mar 18, 2009 at 3:02 PM, someguy
<just.s0m3.guy+llvmdev at gmail.com> wrote:
> Hi All
>
> I'm having nightmares with FrameIndexes during my backend development :(
> I have ComplexPatterns defined for my two addressing modes (RR and
> RI). Most of the time, FrameIndex operands appear to be on load/store
> nodes, in which case everything works fine as my custom addressing
> modes matchers work fine.
>
> Unfortunately, I now have an add node which has a FrameIndex operand
> (this results from a store to an int array in the source).
>
> But there is no explicit pattern to match FrameIndex in the .td files,
> even though I've specified 'frameindex' in the 'roots' of the
> addressing mode ComplexPattern. The result is that I get a
> CannotYetSelect on the FrameIndex operand during selection.
>
> Anyone know what i'm doing wrong?

Sparc and Mips solve this with LEA_ADDRi and LEA_ADDiu,
take a look at MipsInstrInfo.td and SelectAddr in MipsISelDAGToDAG.cpp.

-- 
Bruno Cardoso Lopes
http://www.brunocardoso.cc



More information about the llvm-dev mailing list