This is the mail archive of the
fortran@gcc.gnu.org
mailing list for the GNU Fortran project.
[patch, fortran] PR34559 - ICE on REPEAT with empty string literals
- From: Daniel Franke <franke dot daniel at gmail dot com>
- To: fortran at gcc dot gnu dot org
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Sat, 22 Dec 2007 22:57:16 +0100
- Subject: [patch, fortran] PR34559 - ICE on REPEAT with empty string literals
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:from:to:subject:date:user-agent:cc:mime-version:content-type:message-id; bh=Y561pmOAvB1fa9iZapREGOXftGbaJbyuGd9HRxHBeYo=; b=fgu+viXK1HWyOHx7fWcPNjUuDggR9A0rKzGkITYbVcJ/hv263JeVecSxZIo0k7z1hgl2c6HUSIX/h+I29CG2W60vhOiZGq7KPw36SR+TKE5pkpfMO7jOFPe6+eJO4u1YMMqi2T8s1/xughtMh6RExwmhJc/FBWgkigIPPm5Ylyo=
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=from:to:subject:date:user-agent:cc:mime-version:content-type:message-id; b=CVakv1mXJPDCIs3m685+f4nlhVm26dDNwK0BN9beY3Ofovfz5cF7+c/4expPzevNPNDV1qdySLxi4hBqQe/S+cMC17APcL3CCLZttwGYUWIDedS17wmvxEbv9fqUKb6zxZECc4AdNt/Av4/EndaAKReCai3GvBaWYdAj6n+eZig=
gcc/fortran:
2007-12-22 Daniel Franke <franke.daniel@gmail.com>
PR fortran/34559
* simplify.c (gfc_simplify_repeat): Added safeguard for empty string
literals.
gcc/testsuite:
2007-12-22 Daniel Franke <franke.daniel@gmail.com>
PR fortran/34559
* gfortran.dg/repeat_6.f90: New test.
Regression tested on i686-pc-linux-gnu.
Will commit as obvious after 24 hours if no one objects.
Regards
Daniel
Index: simplify.c
===================================================================
--- simplify.c (revision 131122)
+++ simplify.c (working copy)
@@ -3128,7 +3128,9 @@ gfc_simplify_repeat (gfc_expr *e, gfc_ex
if (e->expr_type != EXPR_CONSTANT)
return NULL;
- if (len || mpz_sgn (e->ts.cl->length->value.integer) != 0)
+ if (len ||
+ (e->ts.cl->length &&
+ mpz_sgn (e->ts.cl->length->value.integer)) != 0)
{
const char *res = gfc_extract_int (n, &ncop);
gcc_assert (res == NULL);
Index: ../testsuite/gfortran.dg/repeat_6.f90
===================================================================
--- ../testsuite/gfortran.dg/repeat_6.f90 (revision 0)
+++ ../testsuite/gfortran.dg/repeat_6.f90 (revision 0)
@@ -0,0 +1,13 @@
+! { dg-do run }
+!
+! PR34559 -- ICE on empty string literals
+!
+! Contributed by Tobias Burnus <burnus@gcc.gnu.org>
+!
+
+ character(len=200) :: string = "a" // repeat ("", 3) &
+ // repeat ("xxx", 0) &
+ // repeat ("string", 2)
+
+ if (string /= "astringstring") CALL abort()
+end