I've checked in the attached patch for PR79738.
-Sandra
2018-11-25 Sandra Loosemore <[email protected]>
PR web/79738
gcc/
* doc/extend.texi (Common Function Attributes): Clarify that
functions with "const" attribute can read const global variables.
Index: gcc/doc/extend.texi
===================================================================
--- gcc/doc/extend.texi (revision 266441)
+++ gcc/doc/extend.texi (working copy)
@@ -2521,11 +2521,13 @@ are automatically detected and this attr
Many functions do not examine any values except their arguments, and
have no effects except to return a value. Calls to such functions lend
themselves to optimization such as common subexpression elimination.
+The presence of the @code{const} attribute on a function declaration
+allows GCC to emit more efficient code for some calls to the function.
+
The @code{const} attribute imposes greater restrictions on a function's
-definition than the similar @code{pure} attribute below because it prohibits
-the function from reading global variables. Consequently, the presence of
-the attribute on a function declaration allows GCC to emit more efficient
-code for some calls to the function. Decorating the same function with
+definition than the similar @code{pure} attribute below because it
+additionally prohibits the function from reading memory except for
+constant global variables. Decorating the same function with
both the @code{const} and the @code{pure} attribute is diagnosed.
@cindex pointer arguments
@@ -3315,8 +3317,9 @@ depending on volatile memory or other sy
two consecutive calls (such as @code{feof} in a multithreading environment).
The @code{pure} attribute imposes similar but looser restrictions on
-a function's defintion than the @code{const} attribute: it allows the
-function to read global variables. Decorating the same function with
+a function's definition than the @code{const} attribute: @code{pure}
+allows the function to read any non-volatile memory, not just
+constant global variables. Decorating the same function with
both the @code{pure} and the @code{const} attribute is diagnosed.
Because a @code{pure} function cannot have any side effects it does not
make sense for such a function to return @code{void}. Declaring such