diff --git a/llvm/docs/LangRef.html b/llvm/docs/LangRef.html
index 90b200809c33..dfb0bd1d7e97 100644
--- a/llvm/docs/LangRef.html
+++ b/llvm/docs/LangRef.html
@@ -2371,6 +2371,11 @@ b: unreachable
is always executed when control transfers to one of the successors, and
may not be executed when control is transfered to another.
+
Additionally, an instruction also control-depends on a terminator
+ instruction if the set of instructions it otherwise depends on would be
+ different if the terminator had transfered control to a different
+ successor.
+
Dependence is transitive.
@@ -2413,8 +2418,23 @@ end:
; control-dependent on %cmp, so this
; always results in a trap value.
- volatile store i32 0, i32* @g ; %end is control-equivalent to %entry
- ; so this is defined (ignoring earlier
+ volatile store i32 0, i32* @g ; This would depend on the store in %true
+ ; if %cmp is true, or the store in %entry
+ ; otherwise, so this is undefined behavior.
+
+ %br i1 %cmp, %second_true, %second_end
+ ; The same branch again, but this time the
+ ; true block doesn't have side effects.
+
+second_true:
+ ; No side effects!
+ br label %end
+
+second_end:
+ volatile store i32 0, i32* @g ; This time, the instruction always depends
+ ; on the store in %end. Also, it is
+ ; control-equivalent to %end, so this is
+ ; well- defined (again, ignoring earlier
; undefined behavior in this example).