[llvm-dev] [RFC] Introducing a byte type to LLVM

John McCall via llvm-dev llvm-dev at lists.llvm.org
Fri Jun 4 11:49:09 PDT 2021


On 4 Jun 2021, at 14:25, John McCall via llvm-dev wrote:
> On 4 Jun 2021, at 11:24, George Mitenkov wrote:
>> Hi all,
>>
>> Together with Nuno Lopes and Juneyoung Lee we propose to add a new byte
>> type to LLVM to fix miscompilations due to load type punning. Please see
>> the proposal below. It would be great to hear the
>> feedback/comments/suggestions!
>>
>>
>> Motivation
>> ==========
>>
>> char and unsigned char are considered to be universal holders in C. They
>> can access raw memory and are used to implement memcpy. i8 is the LLVM’s
>> counterpart but it does not have such semantics, which is also not
>> desirable as it would disable many optimizations.
>
> I don’t believe this is correct.  LLVM does not have an innate
> concept of typed memory.  The type of a global or local allocation
> is just a roundabout way of giving it a size and default alignment,
> and similarly the type of a load or store just determines the width
> and default alignment of the access.  There are no restrictions on
> what types can be used to load or store from certain objects.
>
> C-style type aliasing restrictions are imposed using `tbaa`
> metadata, which are unrelated to the IR type of the access.

If this is all related to https://bugs.llvm.org/show_bug.cgi?id=37469,
I don’t think anything about i8 is the ultimate problem there.

John.


More information about the llvm-dev mailing list