Bug 34296 - Intent(out) and character functions with RESULT: Value-not-set warning
Summary: Intent(out) and character functions with RESULT: Value-not-set warning
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: fortran (show other bugs)
Version: 4.3.0
: P3 normal
Target Milestone: 4.4.0
Assignee: Daniel Franke
URL:
Keywords: diagnostic
Depends on:
Blocks:
 
Reported: 2007-11-29 16:03 UTC by Tobias Burnus
Modified: 2008-02-28 20:27 UTC (History)
1 user (show)

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed: 2008-01-29 10:11:50


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Tobias Burnus 2007-11-29 16:03:34 UTC
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
Comment 1 Tobias Burnus 2007-11-29 16:05:02 UTC
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)
Comment 2 Daniel Franke 2008-01-29 10:11:50 UTC
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
Comment 3 Daniel Franke 2008-02-28 20:23:45 UTC
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

Comment 4 Daniel Franke 2008-02-28 20:27:55 UTC
Both issues fixed in trunk. Closing.

[The second issue, INTENT(out) not set, was already fixed earlier.]