[LLVMdev] C embedded extensions and LLVM
Christopher Lamb
christopher.lamb at gmail.com
Sat Nov 24 19:49:03 PST 2007
On Nov 24, 2007, at 7:47 PM, Christopher Lamb wrote:
>
> 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 have said:
> Should I take the same approach to the encoding of pointer types in
> the types table?
--
Christopher Lamb
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20071124/3e4fde9b/attachment.html>
More information about the llvm-dev
mailing list