[LLVMdev] Type Legalizer Question.

Chris Lattner clattner at apple.com
Thu Oct 2 11:02:22 PDT 2008

On Oct 2, 2008, at 10:21 AM, Alireza.Moshtaghi at microchip.com wrote:

>>> Won't work; LLVM expects at least some basic operations, like add,
> to
>>> be legal in legal register types.
>> That sounds like a bug, not a feature.
>> -Chris
> I think the reason behind this behavior in llvm is the pointer
> calculations.
> When it comes to expanding operands, llvm does not have any case  
> defined
> for load (because its only operand is a pointer) and it asserts if it
> finds out that the pointer of store needs to be expanded...
> For all other targets, whatever register is used for pointer, that
> register can also be part of a legal operation of its own size.
> However, the problem with our target is that it allows only 8 bit
> calculations but also provides 16 bit pointers (2 8 bits)

Sure, I understand what you're saying.  My point was that features are  
added to LLVM on demand, and no targets in mainline need the ability  
to expand pointer operands.  Because nothing has needed it, noone has  
added it.

This doesn't mean that LLVM shouldn't support targets that need this  
functionality, just that it doesn't yet.  I'd really like to see LLVM  
expand to support these targets in a first-class way without hacks!


More information about the llvm-dev mailing list