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.