From 721b7fd257f4dead1c14c48a1256c3ae46b7f36a Mon Sep 17 00:00:00 2001 From: Sandra Loosemore Date: Sun, 25 Nov 2018 20:38:00 -0500 Subject: [PATCH] re PR web/79738 (Documentation for __attribute__((const)) slightly misleading) 2018-11-25 Sandra Loosemore PR web/79738 gcc/ * doc/extend.texi (Common Function Attributes): Clarify that functions with "const" attribute can read const global variables. From-SVN: r266445 --- gcc/ChangeLog | 6 ++++++ gcc/doc/extend.texi | 15 +++++++++------ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 25e7571..f5c73fc 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2018-11-25 Sandra Loosemore + + PR web/79738 + * doc/extend.texi (Common Function Attributes): Clarify that + functions with "const" attribute can read const global variables. + 2018-11-26 Alan Modra * config/rs6000/rs6000.h (OBJECT_PEF, TARGET_MACOS): Delete. diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index 3639254..4e8be5b 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -2521,11 +2521,13 @@ are automatically detected and this attribute is ignored. 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 system resource, that may change between 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 -- 2.7.4