doc/implement-c.texi: About same-as-scalar-type volatile aggregate accesses, PR94600
authorHans-Peter Nilsson <hp@axis.com>
Fri, 4 Dec 2020 19:27:23 +0000 (20:27 +0100)
committerHans-Peter Nilsson <hp@axis.com>
Fri, 4 Dec 2020 19:29:27 +0000 (20:29 +0100)
We say very little about reads and writes to aggregate /
compound objects, just scalar objects (i.e. assignments don't
cause reads).  Let's lets say something safe about aggregate
objects, but only for those that are the same size as a scalar
type.

There's an equal-sounding section (Volatiles) in extend.texi,
but this seems a more appropriate place, as specifying the
behavior of a standard qualifier.

gcc:

2020-12-04  Hans-Peter Nilsson  <hp@axis.com>
    Martin Sebor  <msebor@redhat.com>

PR middle-end/94600
* doc/implement-c.texi (Qualifiers implementation): Add blurb
about access to the whole of a volatile aggregate object, only for
same-size as a scalar object.

gcc/doc/implement-c.texi

index 692297b69c4ad30db40a3030161f67911167aee3..d7433ba5213f40dbc592dab6b19f0302154e4220 100644 (file)
@@ -576,6 +576,11 @@ are of scalar types, the expression is interpreted by GCC as a read of
 the volatile object; in the other cases, the expression is only evaluated
 for its side effects.
 
+When an object of an aggregate type, with the same size and alignment as a
+scalar type @code{S}, is the subject of a volatile access by an assignment
+expression or an atomic function, the access to it is performed as if the
+object's declared type were @code{volatile S}.
+
 @end itemize
 
 @node Declarators implementation