← Back to context

Comment by saagarjha

8 hours ago

No this is irrelevant for making this decision

I've mentioned elsewhere the standards, and compilers as well, disagreeing with you here.

But feel free to run against the various compilers through godbolt. [0] They won't optimise the branch away. Access to a volatile, must be preserved, in the order that they exist. No optimisation, UB or otherwise, is allowed to impede that. Because an access is a side-effect.

[0] https://godbolt.org/z/85cGhq3Ta

  • Compilers not doing something is not a demonstration that they are not actually allowed to do that thing.

  • That they won’t is as most a courtesy to you but they are not required to do this.

    • > Furthermore, at every sequence point the value last stored in the object shall agree with that prescribed by the abstract machine, except as modified by the unknown factors mentioned previously.

      I quoted the C standard, first. Not compiler behaviour.

      I showed where it requires the compiler not to optimise this.

      How about, instead of one-line throwaway disagreements, you point out where they are permitted to do this, instead?

      1 reply →