> 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