Messages in this thread | | | Date | Wed, 20 May 2015 15:15:48 +0100 | From | Ramana Radhakrishnan <> | Subject | Re: Compilers and RCU readers: Once more unto the breach! |
| |
On 20/05/15 15:03, Paul E. McKenney wrote: > On Wed, May 20, 2015 at 02:44:30PM +0100, Ramana Radhakrishnan wrote: >> >> >> On 20/05/15 14:37, David Howells wrote: >>> Paul E. McKenney <paulmck@linux.vnet.ibm.com> wrote: >>> >>>> I was thinking of "y" as a simple variable, but if it is something more >>>> complex, then the compiler could do this, right? >>>> >>>> char *x; >>>> >>>> y; >>>> x = z; >>> >>> Yeah. I presume it has to maintain the ordering, though. >> >> The scheduler for e.g. is free to reorder if it can prove there is >> no dependence (or indeed side-effects for y) between insns produced >> for y and `x = z'. > > So for example, if y is independent of z, the compiler can do the > following: > > char *x; > > x = z; > y; > > But the dependency ordering is still maintained from z to x, so this > is not a problem.
Well, reads if any of x (assuming x was initialized elsewhere) would need to happen before x got assigned to z.
I understood the original "maintain the ordering" as between the statements `x = z' and `y'.
> > Or am I missing something subtle here?
No, it sounds like we are on the same page here.
regards Ramana
> > Thanx, Paul >
| |