From: Sandra Loosemore Date: Mon, 26 Nov 2018 01:38:00 +0000 (-0500) Subject: re PR web/79738 (Documentation for __attribute__((const)) slightly misleading) X-Git-Tag: upstream/12.2.0~27842 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=721b7fd257f4dead1c14c48a1256c3ae46b7f36a;p=platform%2Fupstream%2Fgcc.git 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 --- 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