OSDN Git Service

gcc/fortran:
authordfranke <dfranke@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 22 Dec 2007 22:18:28 +0000 (22:18 +0000)
committerdfranke <dfranke@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 22 Dec 2007 22:18:28 +0000 (22:18 +0000)
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@131139 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/fortran/ChangeLog
gcc/fortran/simplify.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/repeat_6.f90 [new file with mode: 0644]

index a5bf542..79c23de 100644 (file)
@@ -1,3 +1,9 @@
+2007-12-22  Daniel Franke  <franke.daniel@gmail.com>
+
+       PR fortran/34559
+       * simplify.c (gfc_simplify_repeat): Added safeguard for empty
+       string literals.
+
 2007-12-22  Thomas Koenig  <tkoenig@gcc.gnu.org>
 
        PR fortran/34549
@@ -26,6 +32,7 @@
        * module.c (read_module): Check sym->module is there before
        using it in a string comparison.
 
+>>>>>>> .r131138
 2007-12-20  Tobias Burnus  <burnus@net-b.de>
 
        PR fortran/34482
index be0b18f..1641586 100644 (file)
@@ -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);
index f079ae6..a6816d4 100644 (file)
@@ -1,3 +1,8 @@
+2007-12-22  Daniel Franke  <franke.daniel@gmail.com>
+
+       PR fortran/34559
+       * gfortran.dg/repeat_6.f90: New test.
+
 2007-12-22  Thomas Koenig  <tkoenig@gcc.gnu.org>
 
        PR fortran/34549
diff --git a/gcc/testsuite/gfortran.dg/repeat_6.f90 b/gcc/testsuite/gfortran.dg/repeat_6.f90
new file mode 100644 (file)
index 0000000..308941f
--- /dev/null
@@ -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