User account creation filtered due to spam.

Bug 14067 - no warning when character data statement overflows declared size
Summary: no warning when character data statement overflows declared size
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: fortran (show other bugs)
Version: tree-ssa
: P2 enhancement
Target Milestone: ---
Assignee: bdavis9659
URL:
Keywords: diagnostic
Depends on:
Blocks: 19276 19292
  Show dependency treegraph
 
Reported: 2004-02-07 20:51 UTC by bdavis9659
Modified: 2006-06-05 10:22 UTC (History)
3 users (show)

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed: 2005-12-30 18:45:43


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description bdavis9659 2004-02-07 20:51:01 UTC
A character string provided in a data statement that is larger than declared
variable size causes an ICE.

This code is not standard conforming.  

gfortran should either:

a> Issue an error that the character string in the data statement cannot be
larger than the variable size.  { is smaller OK? or does it have to be exact for
character variables ? i dunno but it seems reasonable }

b> Issue a warning and truncate the string.


g77 does half of option (b). g77 misses the warning, but does not do any harm.


To duplicate:

$ cat bigstring.f
      PROGRAM GNEXDATA
      CHARACTER*31 GNCRMESS
C                             1         2         3         4
C                    1234567890123456789012345678901234567890
      DATA GNCRMESS/'   *** COASTAL RADAR    NOT LOADED *** '/
      PRINT*,GNCRMESS
      RETURN
      END
$ /usr/local/bin/gfortran -static bigstring.f
f951: ../../gcc/gcc/fortran/trans-const.c:109: gfc_conv_string_init: Assertion
`len >= slen' failed.
bigstring.f: In function `MAIN__':
bigstring.f:8: internal compiler error: Aborted
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.
$ g77 bigstring.f
$ ./a.out
    *** COASTAL RADAR    NOT LOA
$ /usr/local/bin/gfortran --version
GNU Fortran 95 (GCC 3.5-tree-ssa 20040207 (merged 20040126))
Copyright (C) 2003 Free Software Foundation, Inc.
Comment 1 Andrew Pinski 2004-02-07 22:17:34 UTC
Confirmed,
Comment 3 CVS Commits 2004-05-30 16:33:31 UTC
Subject: Bug 14067

CVSROOT:	/cvs/gcc
Module name:	gcc
Changes by:	tobi@gcc.gnu.org	2004-05-30 16:33:29

Modified files:
	gcc/fortran    : ChangeLog trans-const.c 

Log message:
	PR fortran/14067
	* trans-const.c (gfc_conv_string_init): Allow variable string
	length lower than initialization string length.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/ChangeLog.diff?cvsroot=gcc&r1=1.53&r2=1.54
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/trans-const.c.diff?cvsroot=gcc&r1=1.4&r2=1.5

Comment 4 Tobias Schlüter 2004-05-30 16:36:33 UTC
The ICE is fixed, but this could still do with a warning.
Comment 5 patchapp@dberlin.org 2006-06-02 20:15:17 UTC
Subject: Bug number PR14067

A patch for this bug has been added to the patch tracker.
The mailing list url for the patch is http://gcc.gnu.org/ml/gcc-patches/2006-06/msg00093.html
Comment 6 Paul Thomas 2006-06-05 07:45:17 UTC
Subject: Bug 14067

Author: pault
Date: Mon Jun  5 07:45:03 2006
New Revision: 114385

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=114385
Log:
2006-06-05  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/14067
	* data.c (create_character_intializer): Add warning message
	for truncated string.

	PR fortran/16943
	* symbol.c : Include flags.h.
	(gfc_add_type): If a procedure and types are the same do not
	throw an error unless standard is less than gnu or pedantic.

	PR fortran/20838
	* parse.c (parse_do_block): Error if named block do construct
	does not have a named enddo.

	PR fortran/27655
	* check.c (gfc_check_associated): Pick up EXPR_NULL for pointer
	as well as target and put error return at end of function.

2006-06-05  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/14067
	* gfortran.dg/data_char_1.f90: Add messages for truncated
	strings.

	PR fortran/16943
	* gfortran.dg/func_decl_2.f90: New test.

	PR fortran/20838
	* gfortran.dg/do_2.f90: New test.

	PR fortran/27655
	* gfortran.dg/associated_3.f90: New test.


Added:
    trunk/gcc/testsuite/gfortran.dg/associated_3.f90
    trunk/gcc/testsuite/gfortran.dg/do_2.f90
    trunk/gcc/testsuite/gfortran.dg/func_decl_2.f90
Modified:
    trunk/gcc/fortran/ChangeLog
    trunk/gcc/fortran/check.c
    trunk/gcc/fortran/data.c
    trunk/gcc/fortran/parse.c
    trunk/gcc/fortran/symbol.c
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/gfortran.dg/data_char_1.f90

Comment 7 Paul Thomas 2006-06-05 10:14:52 UTC
Subject: Bug 14067

Author: pault
Date: Mon Jun  5 10:14:32 2006
New Revision: 114387

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=114387
Log:
2006-06-05  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/14067
	* data.c (create_character_intializer): Add warning message
	for truncated string.

	PR fortran/16943
	* symbol.c : Include flags.h.
	(gfc_add_type): If a procedure and types are the same do not
	throw an error unless standard is less than gnu or pedantic.

	PR fortran/20838
	* parse.c (parse_do_block): Error if named block do construct
	does not have a named enddo.

	PR fortran/27655
	* check.c (gfc_check_associated): Pick up EXPR_NULL for pointer
	as well as target and put error return at end of function.

2006-06-05  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/14067
	* gfortran.dg/data_char_1.f90: Add messages for truncated
	strings.

	PR fortran/16943
	* gfortran.dg/func_decl_2.f90: New test.

	PR fortran/20838
	* gfortran.dg/do_2.f90: New test.

	PR fortran/27655
	* gfortran.dg/associated_3.f90: New test.


Added:
    branches/gcc-4_1-branch/gcc/testsuite/gfortran.dg/associated_3.f90
    branches/gcc-4_1-branch/gcc/testsuite/gfortran.dg/do_2.f90
    branches/gcc-4_1-branch/gcc/testsuite/gfortran.dg/func_decl_2.f90
Modified:
    branches/gcc-4_1-branch/gcc/fortran/ChangeLog
    branches/gcc-4_1-branch/gcc/fortran/check.c
    branches/gcc-4_1-branch/gcc/fortran/data.c
    branches/gcc-4_1-branch/gcc/fortran/parse.c
    branches/gcc-4_1-branch/gcc/fortran/symbol.c
    branches/gcc-4_1-branch/gcc/testsuite/ChangeLog
    branches/gcc-4_1-branch/gcc/testsuite/gfortran.dg/data_char_1.f90

Comment 8 Paul Thomas 2006-06-05 10:22:08 UTC
Fixed on trunk and 4.1

Paul