[llvm-dev] invariant.load metadata semantics
Daniel Berlin via llvm-dev
llvm-dev at lists.llvm.org
Thu Aug 25 13:49:36 PDT 2016
On Thu, Aug 25, 2016 at 1:46 PM, Caldarale, Charles R via llvm-dev <
llvm-dev at lists.llvm.org> wrote:
> > From: llvm-dev [mailto:llvm-dev-bounces at lists.llvm.org] On Behalf Of
> Hal Finkel via llvm-dev
> > Subject: Re: [llvm-dev] invariant.load metadata semantics
>
> > Alternatively, we might phrase this as: The optimizer may assume that
> all values loaded
> > from a location, where any of the loads are tagged with !invariant.load,
> are identical.
>
> This would seem to limit the usefulness of the invariant attribute. I
> would expect invariant to indicate that loads reachable from the one marked
> invariant are guaranteed to read the same value, but that prior ones are
> not.
Define "reachable".
Do you mean there is any path from the load to the new load?
If so, what about loop backedges?
:)
This is one of the reasons they are explicitly marked.
> This would allow updates to be made to the location of interest up to the
> point of declared invariance, but not after.
>
This has the same problem.
for loop:
store a
load a !invariant.load
Legal or not if we can prove the loop iterates >1 time?
What does it mean?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160825/cdf3c492/attachment.html>
More information about the llvm-dev
mailing list