Lines Matching +full:store +full:- +full:conditional
12 Therefore, a load-load control dependency will not preserve ordering
32 (usually) guaranteed for load-store control dependencies, as in the
43 the compiler might fuse the store to "b" with other stores. Worse yet,
44 the compiler might convert the store into a load and a check followed
45 by a store, and this compiler-generated load would not be ordered by
49 "a" is always non-zero, it would be well within its rights to optimize
80 /* WRITE_ONCE(b, 1); -- moved up, BUG!!! */
83 /* WRITE_ONCE(b, 1); -- moved up, BUG!!! */
87 Now there is no conditional between the load from "a" and the store to
89 conditional is absolutely required, and must be present in the final
90 assembly code, after all of the compiler and link-time optimizations
103 Without explicit memory ordering, control-dependency-based ordering is
120 and again remove the conditional branch that is absolutely required to
132 If MAX is compile-time defined to be 1, then the compiler knows that
142 between the load from variable "a" and the store to variable "b". It is
143 tempting to add a barrier(), but this does not help. The conditional
149 BUILD_BUG_ON(MAX <= 1); /* Order load from a with store to b. */
159 must store different values to "b". As in previous examples, if the two
160 values were identical, the compiler could pull this store outside of the
163 You must also be careful avoid relying too much on boolean short-circuit
178 compiler from out-guessing your code. Again, although READ_ONCE() really
182 In addition, control dependencies apply only to the then-clause and
183 else-clause of the "if" statement in question. In particular, they do
198 conditional-move instructions, as in this fanciful pseudo-assembly
209 instructions and the store depending on them. This means that a weakly
211 "a" and the store to "c". In short, control dependencies provide ordering
212 only to the stores in the then-clause and else-clause of the "if" statement
235 (*) Control dependencies require at least one run-time conditional
236 between the prior load and the subsequent store, and this
237 conditional must involve the prior load. If the compiler is able
238 to optimize the conditional away, it will have also optimized
240 can help to preserve the needed conditional.
246 (*) Control dependencies apply only to the then-clause and else-clause
254 need all the CPUs to agree on the ordering of a given store against