[cfe-dev] [RFC] Introducing a byte type to LLVM
John McCall via cfe-dev
cfe-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/cfe-dev/attachments/20210604/79126e9f/attachment.html>
More information about the cfe-dev
mailing list