Documentation/memory-barriers.txt: Need barriers() for some control dependencies
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Thu, 13 Feb 2014 04:19:47 +0000 (20:19 -0800)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Mon, 17 Feb 2014 22:56:09 +0000 (14:56 -0800)
commit9b2b3bf53124dca4ac815bd2fca53a31e5e262bd
tree7984451c41db3ca509fc860a00e2e81d727a2dcc
parentbbf393b0d5350d68dbcf1f231b8af07b1b31121d
Documentation/memory-barriers.txt: Need barriers() for some control dependencies

Current compilers can "speculate" stores in the case where both legs
of the "if" statement start with identical stores.  Because the stores
are identical, the compiler knows that the store will unconditionally
execute regardless of the "if" condition, and so the compiler is within
its rights to hoist the store to precede the condition.  Such hoisting
destroys the control-dependency ordering.  This ordering can be restored
by placing a barrier() at the beginning of each leg of the "if" statement.
This commit adds this requirement to the control-dependencies section.

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Documentation/memory-barriers.txt