[PATCH] D67399: [ARM] Follow AACPS standard for volatile bitfields
John McCall via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Fri Sep 13 12:53:08 PDT 2019
rjmccall added a comment.
In D67399#1669568 <https://reviews.llvm.org/D67399#1669568>, @jfb wrote:
> In D67399#1669038 <https://reviews.llvm.org/D67399#1669038>, @dnsampaio wrote:
>
> > Indeed our main concern is regarding the access widths of loads. As mentioned by @rjmccall, most volatile bitfields are used to perform memory mapped I/O, and some hardware only support them with a specific access width.
> > The spurious load I am more than glad to leave it disable behind a command flag, so it will only appear if the user requests it. See that volatile accesses might have side effects, and for example, an I/O read counter holding an odd number could define that the data is still being processed.
>
>
> Are the cases being addressed in the PR actually relevant to real MMIO, or is this patch following the letter of AAPCS which doesn't actually matter?
Again, I think AAPCS is well within its rights to say that certain volatile accesses should be performed with loads and stores of certain widths. If low-level programmers cannot use bit-fields today with memory-mapped I/O because they cannot trust compilers to produce reasonable accesses, that is a legitimate concern for ABI authors and a legitimate bug for compiler maintainers.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D67399/new/
https://reviews.llvm.org/D67399
More information about the cfe-commits
mailing list