aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobias Schlüter <tobias.schlueter@physik.uni-muenchen.de>2004-05-30 18:33:28 +0200
committerTobias Schlüter <tobi@gcc.gnu.org>2004-05-30 18:33:28 +0200
commit9471628798891a7bc2cf21721764520325630c9b (patch)
treedb276b0a5535cbd98a0ca935216413d02a3df989
parentd22b7e1406dbb03a6d50d649030b70b6f42d1021 (diff)
downloadgcc-9471628798891a7bc2cf21721764520325630c9b.zip
gcc-9471628798891a7bc2cf21721764520325630c9b.tar.gz
gcc-9471628798891a7bc2cf21721764520325630c9b.tar.bz2
re PR fortran/14067 (no warning when character data statement overflows declared size)
PR fortran/14067 * trans-const.c (gfc_conv_string_init): Allow variable string length lower than initialization string length. From-SVN: r82457
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/trans-const.c8
2 files changed, 11 insertions, 3 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index fa09538..f942b17 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2004-05-30 Tobias Schlueter <tobias.schlueter@physik.uni-muenchen.de>
+
+ PR fortran/14067
+ * trans-const.c (gfc_conv_string_init): Allow variable string
+ length lower than initialization string length.
+
2004-05-30 Paul Brook <paul@codesourcery.com>
PR fortran/15620
diff --git a/gcc/fortran/trans-const.c b/gcc/fortran/trans-const.c
index 13f6b83..8a716de 100644
--- a/gcc/fortran/trans-const.c
+++ b/gcc/fortran/trans-const.c
@@ -90,7 +90,9 @@ gfc_build_string_const (int length, const char *s)
}
/* Return a string constant with the given length. Used for static
- initializers. The constant will be padded to the full length. */
+ initializers. The constant will be padded or truncated to match
+ length. */
+
tree
gfc_conv_string_init (tree length, gfc_expr * expr)
{
@@ -106,8 +108,8 @@ gfc_conv_string_init (tree length, gfc_expr * expr)
len = TREE_INT_CST_LOW (length);
slen = expr->value.character.length;
- assert (len >= slen);
- if (len != slen)
+
+ if (len > slen)
{
s = gfc_getmem (len);
memcpy (s, expr->value.character.string, slen);