aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/simplify.c
diff options
context:
space:
mode:
authorDaniel Franke <dfranke@gcc.gnu.org>2007-12-22 17:18:28 -0500
committerDaniel Franke <dfranke@gcc.gnu.org>2007-12-22 17:18:28 -0500
commit111716e0e166cbcec6880ec3266bbc335f96d2ca (patch)
treeccbe60c206a371af87a720afe69089d642dff136 /gcc/fortran/simplify.c
parent62ee27a4694a9dcd8a9470217dd03900ef7c8ba3 (diff)
downloadgcc-111716e0e166cbcec6880ec3266bbc335f96d2ca.zip
gcc-111716e0e166cbcec6880ec3266bbc335f96d2ca.tar.gz
gcc-111716e0e166cbcec6880ec3266bbc335f96d2ca.tar.bz2
re PR fortran/34559 (ICE using REPEAT on string literals)
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. From-SVN: r131139
Diffstat (limited to 'gcc/fortran/simplify.c')
-rw-r--r--gcc/fortran/simplify.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c
index be0b18f..1641586 100644
--- a/gcc/fortran/simplify.c
+++ b/gcc/fortran/simplify.c
@@ -3128,7 +3128,9 @@ gfc_simplify_repeat (gfc_expr *e, gfc_expr *n)
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);