https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61180
Dominique d'Humieres <dominiq at lps dot ens.fr> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|WAITING |NEW CC| |jvdelisle at gcc dot gnu.org, | |sgk at troutmask dot apl.washingto | |n.edu --- Comment #3 from Dominique d'Humieres <dominiq at lps dot ens.fr> --- (1) I shall RTFM before rather than after answering: -Wsurprising is indeed included in -Wall!(which I find surprising, yet another bad naming). (2) with the following patch --- ../_clean/gcc/fortran/expr.c 2014-05-07 12:46:43.000000000 +0200 +++ gcc/fortran/expr.c 2014-05-15 12:00:21.000000000 +0200 @@ -3157,7 +3157,8 @@ gfc_check_assign (gfc_expr *lvalue, gfc_ /* This is possibly a typo: x = f() instead of x => f(). */ if (gfc_option.warn_surprising - && rvalue->expr_type == EXPR_FUNCTION && gfc_expr_attr (rvalue).pointer) + && rvalue->expr_type == EXPR_FUNCTION && gfc_expr_attr (rvalue).pointer + && gfc_expr_attr (lvalue).pointer) gfc_warning ("POINTER-valued function appears on right-hand side of " "assignment at %L", &rvalue->where); --- ../_clean/gcc/fortran/invoke.texi 2014-05-08 19:46:13.000000000 +0200 +++ gcc/fortran/invoke.texi 2014-05-15 14:38:09.000000000 +0200 @@ -852,21 +852,26 @@ This currently produces a warning under I get (without regression) [Book15] f90/bug% gfc pr61180.f90 -Wall pr61180.f90:27.8: data3=get_data(foo) 1 Warning: POINTER-valued function appears on right-hand side of assignment at (1) I shamelessly admit a very limited understanding of 'gfc_expr_attr (lvalue).(pointer|target))': replacing 'gfc_expr_attr (lvalue).pointer' with 'gfc_expr_attr (lvalue).target' gives the last two warning, while '!gfc_expr_attr (lvalue).pointer' gives the first one only. (3) Is the following change in the manual OK? @itemize @bullet @item -An INTEGER SELECT construct has a CASE that can never be matched as its -lower value is greater than its upper value. +An @code{INTEGER SELECT} construct has a @code{CASE} that can never be +matched as its lower value is greater than its upper value. @item -A LOGICAL SELECT construct has three CASE statements. +A @code{LOGICAL SELECT} construct has three @code{CASE} statements. @item -A TRANSFER specifies a source that is shorter than the destination. +A @code{TRANSFER} specifies a source that is shorter than the destination. @item -The type of a function result is declared more than once with the same type. If -@option{-pedantic} or standard-conforming mode is enabled, this is an error. +The type of a function result is declared more than once with the same +type. If @option{-pedantic} or standard-conforming mode is enabled, +this is an error. @item A @code{CHARACTER} variable is declared with negative length. + +@item +@code{POINTER}-valued function appears on right-hand side of assignment +to a pointer. @end itemize @item -Wtabs Note I have wrapped some additional keyword in @code. Is it OK?