[LangRef] Clarify semantics of load metadata.
authorEli Friedman <efriedma@codeaurora.org>
Tue, 17 Jul 2018 20:38:11 +0000 (20:38 +0000)
committerEli Friedman <efriedma@codeaurora.org>
Tue, 17 Jul 2018 20:38:11 +0000 (20:38 +0000)
commite15a111ba0df12b4ad24c64cf9daef031fba007e
tree2f7c2819b3b6775d676dccbde2d9e408aece7c8b
parent061b4af998fc4a211566505555403806c373886a
[LangRef] Clarify semantics of load metadata.

We need to explicitly state what happens when an invariant promised by
load metadata is violated at runtime, since it's come up repeatedly.

It's possible we want to specify that the result of the load is poison
in some cases, rather than undefined behavior, if the constraint is
violated. That would allow preserving the metadata when the load is
hoisted, but doesn't allow propagating metadata based on control flow.
We currently do transforms based on control flow for nonnull metadata
(in PromoteMemToReg).

Differential Revision: https://reviews.llvm.org/D47854

llvm-svn: 337325
llvm/docs/LangRef.rst