> From: Martin Sebor via Gcc-patches <gcc-patches@gcc.gnu.org>
> Date: Fri, 4 Dec 2020 01:49:51 +0100

> On 12/3/20 12:14 PM, Hans-Peter Nilsson via Gcc-patches wrote:
> > Belatedly, here's an updated version, using Martin Sebor's
> > suggested wording from
> > "https://gcc.gnu.org/pipermail/gcc-patches/2020-July/549580.html";.
> > I added two commas, hopefully helpfully.  Albeit ok'd by Richard
> > Biener in
> > "https://gcc.gnu.org/pipermail/gcc-patches/2020-July/549922.html";,
> > better have this reviewed properly, including markup (none added).
> > 
> > Ok for trunk (gcc-11) and gcc-10?
> 
> Thanks for taking my suggestion!

You're welcome!

> These are just formatting nits but I would only further suggest
> to enclose the name S (since it names a type) and the second
> volatile in an @code{} directive (since it's a keyword).
> (The volatile in volatile access is not one so it shouldn't
> be formatted that way.)

Here we go, and now with all the right email-addresses.
Also, I inspected info and pdf output.  Yes, the last S ends up
on a line by its own in the pdf.  I didn't think it was worth
fixing by e.g. messing with the word order.

BTW, "make -j 4 info pdf" from the top-level doesn't work;
something is messed up in dependencies.  From a non-j "make info
pdf" it looks like libgcc wanted to compile stuff (no "all-gcc"
was done).

---
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.

Ok for trunk (gcc-11) and gcc-10?

gcc:

2020-12-04  Hans-Peter Nilsson  <h...@axis.com>
            Martin Sebor  <mse...@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 | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/gcc/doc/implement-c.texi b/gcc/doc/implement-c.texi
index 692297b69c4..d7433ba5213 100644
--- a/gcc/doc/implement-c.texi
+++ b/gcc/doc/implement-c.texi
@@ -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
-- 
2.11.0

brgds, H-P

Reply via email to