> volatile unsigned char y;
> void f ()
> {
>         y |= 32;
> }
> 
> I cannot see a reason not to use "orb $32,y" here instead of a three
> steps read/modify/write operation. Is this only a missed optimization?

No, it's purposeful.  The idea was that this is completely equivalent to
        y = y | 32;
That does two memory operations and it's volatile, so we want to as well.
Now in some sense, so does "orb $32,y", but we want to play it safe.

For almost all purposes, saying "volatile" means to turn off all optimizations
involving that object and I don't think we want to change that at this point
because of the possible damage to legacy code.

Reply via email to