[llvm-dev] @llvm.memcpy not honoring volatile?

Guillaume Chatelet via llvm-dev llvm-dev at lists.llvm.org
Thu Jun 6 02:40:16 PDT 2019


Thx for the explanation Eli and Tim.
My understanding of volatile was that you may have a different value every
time you read and as such overlapping reads may be a bug.

Now, since the behaviour of volatile memcpy is not guaranteed and since clang
does not allow to use it anyways <https://godbolt.org/z/CnCOLc> I would
like to challenge its existence.
Is there a know reason for keeping the volatile argument in @llvm.memcpy?


On Wed, Jun 5, 2019 at 11:28 PM Tim Northover <t.p.northover at gmail.com>
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.
>
> Cheers.
>
> Tim.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190606/22c38699/attachment.html>


More information about the llvm-dev mailing list