From 4bda57622b7f708be49bc80906fff89bf68c45a1 Mon Sep 17 00:00:00 2001 From: Geoff Berry Date: Wed, 31 Aug 2016 17:39:21 +0000 Subject: [PATCH] [LangRef] Clarify !invariant.load semantics. Based on discussion on llvm-dev. llvm-svn: 280262 --- llvm/docs/LangRef.rst | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/llvm/docs/LangRef.rst b/llvm/docs/LangRef.rst index 83573be..4bbd063 100644 --- a/llvm/docs/LangRef.rst +++ b/llvm/docs/LangRef.rst @@ -7072,12 +7072,10 @@ as the ``MOVNT`` instruction on x86. The optional ``!invariant.load`` metadata must reference a single metadata name ```` corresponding to a metadata node with no -entries. The existence of the ``!invariant.load`` metadata on the -instruction tells the optimizer and code generator that the address -operand to this load points to memory which can be assumed unchanged. -Being invariant does not imply that a location is dereferenceable, -but it does imply that once the location is known dereferenceable -its value is henceforth unchanging. +entries. If a load instruction tagged with the ``!invariant.load`` +metadata is executed, the optimizer may assume the memory location +referenced by the load contains the same value at all points in the +program where the memory location is known to be dereferenceable. The optional ``!invariant.group`` metadata must reference a single metadata name ```` corresponding to a metadata node. See ``invariant.group`` metadata. -- 2.7.4