[llvm-dev] @llvm.memcpy not honoring volatile?
JF Bastien via llvm-dev
llvm-dev at lists.llvm.org
Fri Jun 7 10:48:29 PDT 2019
> On Jun 5, 2019, at 2:28 PM, Tim Northover via llvm-dev <llvm-dev at lists.llvm.org> wrote:
>
> On Wed, 5 Jun 2019 at 13:49, Eli Friedman via llvm-dev
> <llvm-dev at lists.llvm.org> wrote:
>> I don’t see any particular reason to guarantee that a volatile memcpy will access each byte exactly once. How is that useful?
>
> I agree it's probably not that useful, but I think the non-duplicating
> property of volatile is ingrained strongly enough that viewing a
> memcpy as a single load and store to each unit (in an unspecified
> order) should be legitimate; so I think this actually is a bug.
>
> As the documentation says though, it's unwise to depend on the
> behaviour of a volatile memcpy.
I agree with Tim, this seems like a bug. My expectation is that volatile touch each memory location exactly once, unless absolutely impossible (e.g. bitfields on most ISAs).
More information about the llvm-dev
mailing list