> Right but in the concrete namei example I can't see how a compiler> optimization can make a difference. The order of the loads is quite> clear:> > LOAD inode = next.dentry->inode> if (inode != NULL)> LOAD inode->f_op> > What is there the compiler can optimize?

Those two loads depend on each other, I don't think any implementationcan re-order them. In fact, such data dependency is typically what isused to avoid having barriers in some cases. The second load cannot beissued until the value from the first one is returned.