[LLVMdev] C embedded extensions and LLVM
Christopher Lamb
christopher.lamb at gmail.com
Sat Nov 24 19:47:58 PST 2007
On Nov 21, 2007, at 6:22 PM, Chris Lattner wrote:
> On Wed, 21 Nov 2007, Christopher Lamb wrote:
>>> Unlike alignment and volatility, I think that the address space
>>> qualifier
>>> should be represented explicitly in the type system. The reason
>>> for this
>
>> I've come across a hitch. Store instructions do not reference the
>> pointer
>> type in the .bc format, only the stored type. The .bc reader
>> constructs the
>> pointer type from the stored value's type. This means that the
>> address space
>> information doesn't come along for the ride.
>
> Ah, that is annoying. :(
>
>> I see three solutions:
>>
>> 1) Change how stores are written/read in .bc to store the pointer
>> type rather
>> than the stored type. This is the most straight forward, but I
>> think it also
>> breaks .bc compatibility in a way that's impossible to work
>> around. There's
>> no way to differentiate the new and old forms.
>
> I strongly prefer this approach. Implementing this without
> breaking old
> .bc files is actually pretty simple. Just add a new
> "FUNC_CODE_INST_STORE2" record, and define it however you want (with a
> new, previously unused, ID #).
>
> The reader should read both FUNC_CODE_INST_STORE (which can't involved
> addr spaces) and FUNC_CODE_INST_STORE2 (which can). The .bc writer
> can
> switch to unconditionally writing out stores in FUNC_CODE_INST_STORE2
> format.
>
> Please add a generous block comment to
> llvm/include/llvm/Bitcode/LLVMBitCodes.h above the new enum explaining
> what the difference is though. :)
Should I take the same approach to the encoding of pointer types in
the pointer table?
--
Christopher Lamb
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20071124/7ca3547e/attachment.html>
More information about the llvm-dev
mailing list