The following code does not give a warning: CHARACTER(2) FUNCTION ctbgt() RESULT(ctab) END function ctbgt Only if one removes either the RESULT or changes CHARACTER in, e.g., INTEGER a warning is shown. w/ RESULT and INTEGER: warning: Function return value not set w/o RESULT: warning: Function does not return a value * * * Similarly for INTENT(OUT) arguments of procedures: SUBROUTINE ctbgt(ctab) INTEGER, intent(out) :: ctab END SUBROUTINE ctbgt
I wanted to add that a possible reason for the character FUNCTION problem is that the value is returned as argument and not as function return value: test (__result, .__result)
See patch in PR31463. New output for testcase: $> gfortran-svn -g -c -Wall pr34296.f90 pr34296.f90:1.42: CHARACTER(2) FUNCTION ctbgt() RESULT(ctab) 1 Warning: Return value 'ctab' of function 'ctbgt' declared at (1) not set
Subject: Bug 34296 Author: dfranke Date: Thu Feb 28 20:22:55 2008 New Revision: 132756 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=132756 Log: gcc/fortran: 2008-02-28 Daniel Franke <franke.daniel@gmail.com> PR fortran/31463 PR fortran/33950 PR fortran/34296 * lang.opt: Added -Wreturn-type. * options.c (gfc_handle_option): Recognize -Wreturn-type. * trans-decl.c (gfc_trans_deferred_vars): Emit warnings for funtions where the result value is not set. (gfc_generate_function_code): Likewise. (generate_local_decl): Emit warnings for funtions whose RESULT variable is not set. gcc/testsuite: 2008-02-28 Daniel Franke <franke.daniel@gmail.com> PR fortran/31463 PR fortran/33950 PR fortran/34296 * gfortran.dg/arrayio_11.f90: Fixed test. * gfortran.dg/arrayio_12.f90: Likewise. * gfortran.dg/module_read_1.f90: Added warning-directives. * gfortran.dg/pr32242.f90: Likewise. * gfortran.dg/result_in_spec_3.f90: Likewise. * gfortran.dg/use_12.f90: Likewise. * gfortran.dg/warn_function_without_result.f90 : New test. Added: trunk/gcc/testsuite/gfortran.dg/warn_function_without_result.f90 Modified: trunk/gcc/fortran/ChangeLog trunk/gcc/fortran/lang.opt trunk/gcc/fortran/options.c trunk/gcc/fortran/trans-decl.c trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/gfortran.dg/arrayio_11.f90 trunk/gcc/testsuite/gfortran.dg/arrayio_12.f90 trunk/gcc/testsuite/gfortran.dg/module_read_1.f90 trunk/gcc/testsuite/gfortran.dg/pr32242.f90 trunk/gcc/testsuite/gfortran.dg/result_in_spec_3.f90 trunk/gcc/testsuite/gfortran.dg/use_12.f90
Both issues fixed in trunk. Closing. [The second issue, INTENT(out) not set, was already fixed earlier.]