Maybe, but I think having the volatile variable makes it consistent with the "everything done inside these blocks is volatile" assertion.
If by everything done you mean computation, I don't think it holds since ```c *(x) = ++__seq; ``` just expands to: ```c unsigned int tmp = __seq + 1; __seq = tmp; *(x) = tmp; ``` where `tmp` is not volatile. Furthermore it compiles to unnecessary MOV instructions (1 before the increment, 2 after the increment) around the increment, which cannot be optimized at all due to `volatile`; without volatile, the increment can be as simple as `INC R_seq; MOV [x], R_seq`. If by everything done you mean access to any location that other threads may access (i.e., the pointer being dereferenced may alias with another pointer owned by a concurrently executing subroutine), then `__seq` (which is merely an automatic variable that does not escape this subroutine) does not meet this condition. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/3103#note_37150