[llvm-dev] The value of padding when storing an aggregate into memory

Juneyoung Lee via llvm-dev llvm-dev at lists.llvm.org
Tue Aug 18 20:05:15 PDT 2020


Hello all,

LangRef isn't clear about the value of padding when an aggregate value is
stored into memory, and I'd like to suggest that storing an aggregate fills
padding with undef.

Here are a few clues that supports this change:

- According to C17, the value of padding bytes when storing values in
structures or unions is unspecified.

- IPSCCP ignores padding and directly stores a constant aggregate if
possible: https://godbolt.org/z/ddWq9z
Memcpyopt ignores padding when copying an aggregate or storing a constant:
https://godbolt.org/z/hY6ndd / https://godbolt.org/z/3WMP5a

- Alive2 (with store operation updated) did not find any problematic
transformation from LLVM unit tests and while running translation
validation on a few C programs.

The patch is here: https://reviews.llvm.org/D86189

Thanks,
Juneyoung
-- 

Juneyoung Lee
Software Foundation Lab, Seoul National University
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200819/482c1806/attachment.html>


More information about the llvm-dev mailing list