[PATCH] D128501: [CodeGen] Make uninitialized Lvalue bit-field stores poison compatible

John McCall via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Jun 27 18:25:46 PDT 2022

rjmccall added a comment.

In D128501#3613890 <https://reviews.llvm.org/D128501#3613890>, @efriedma wrote:

>> Is there no way in LLVM to load partially-initialized memory and then freeze it that will preserve the parts of the value that are initialized? Because that seems like something that LLVM needs to be providing.
> It's currently possible to `load <32 x i1>`, freeze the result, and bitcast it to i32.  But the backend is likely to turn that into something messy.  Otherwise, no, there isn't really any way to load a partially poisoned value as an i32.

Is that seen as a defect or as for some reason desirable?  Because I worry that optimizer people are talking themselves into something that would be a truly beautiful model if only there were a frontend that could emit code for it.

Doesn't this make it e.g. illegal to use large integer types to do a memcpy of anything that might contain uninitialized padding?

  rG LLVM Github Monorepo



More information about the cfe-commits mailing list