[cfe-dev] thoughts about n-bit bytes for clang/llvm

Ray Fix rayfix.ml at gmail.com
Tue Sep 8 14:32:54 PDT 2009


On Sep 4, 2009, at 1:35 PM, me22 wrote:
> 2009/9/4 Ray Fix <rayfix.ml at gmail.com>:
>> On Sep 4, 2009, at 11:19 AM, me22 wrote:
>>
>>> 2009/9/4 Ray Fix <rayfix.ml at gmail.com>:
>>>>
>>>> Do these changes seem reasonable to pursue?  What other things  
>>>> are broken
>>>> in
>>>> Clang and LLVM by changing the assumption about 8-bit bytes?
>>>>
>>>
>>> Bitter Melon appears to use i8* to implement void*, so you might
>>> consider whether or how that should change.  (It might be handled
>>> better by clang than gcc, though.)
>>
>> Interesting point.  On IRC the other day nlewycky mentioned a type  
>> like i3*
>> would use the architecture's smallest word size so I might be able  
>> to get
>> away with doing very little.  I like the idea of making void*  
>> depend on the
>> architecture, which would be i16* in my case and i8* in all others
>> (currently).  It just seems cleaner.  I guess I need to give a hard  
>> look to
>> TargetData, which someone else on IRC was telling me (his nick is  
>> currently
>> escaping me).
>>
>
> I'm curious why "void*" doesn't translate to "{}*", myself, as I think
> that fits better.  I suppose you also need to figure out the semantics
> of the align annotations with different byte sizes.

I think the reason might be because internally the SizeOfPointee that  
is getting passed around as 1 in some cases to handle GNU void* and  
function pointer arithmetic extensions.  At least that is what the  
code seems to say.  See ExprConstant.cpp:357.  I am guessing there  
would be lots of breakage if you set SizeOfPointee to, say, 0 here.   
Of course there are others on this list that know much better than  
I.    I will just be happy when I can get void* to point an i16   
(*sigh*  Still working on it.)

Anyway, I'm having fun and learning a little bit each day.

Ray



More information about the cfe-dev mailing list