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

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


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.

John.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20210604/79126e9f/attachment.html>


More information about the llvm-dev mailing list