]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR fortran/34248 (ICE on assumed length character function)
authorTobias Burnus <burnus@net-b.de>
Thu, 29 Nov 2007 17:41:37 +0000 (18:41 +0100)
committerTobias Burnus <burnus@gcc.gnu.org>
Thu, 29 Nov 2007 17:41:37 +0000 (18:41 +0100)
2007-11-29  Tobias Burnus  <burnus@net-b.de>

        PR fortran/34248
        * trans-decl.c (generate_dependency_declarations): Check
        for NULL pointers before accessing the string length.

2007-11-29  Tobias Burnus  <burnus@net-b.de>

        PR fortran/34248
        * gfortran.dg/result_in_spec_3.f90: New.

From-SVN: r130517

gcc/fortran/ChangeLog
gcc/fortran/trans-decl.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/result_in_spec_3.f90 [new file with mode: 0644]

index a176c27cb3b58fc21feb295c22e036c11e12878c..8f185f7c11570e4beeb2c2423903c5d5344c8637 100644 (file)
@@ -1,3 +1,9 @@
+2007-11-29  Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/34248
+       * trans-decl.c (generate_dependency_declarations): Check
+       for NULL pointers before accessing the string length.
+
 2007-11-29  Tobias Burnus  <burnus@net-b.de>
 
        PR fortran/34262
index 84e722663222fd5fee896e2698f493cdabd3be00..e48de1f8867bf0aba5f8143a959fd802b4ffe102 100644 (file)
@@ -2924,7 +2924,9 @@ generate_dependency_declarations (gfc_symbol *sym)
   int i;
 
   if (sym->ts.type == BT_CHARACTER
-       && sym->ts.cl->length->expr_type != EXPR_CONSTANT)
+      && sym->ts.cl
+      && sym->ts.cl->length
+      && sym->ts.cl->length->expr_type != EXPR_CONSTANT)
     generate_expr_decls (sym, sym->ts.cl->length);
 
   if (sym->as && sym->as->rank)
index e062abc651cb55d9931503ffa4d51ff52d0cdfe3..889d220f3ea8271ed52d12567b5626e3d967909d 100644 (file)
@@ -1,3 +1,8 @@
+2007-11-29  Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/34248
+       * gfortran.dg/result_in_spec_3.f90: New.
+
 2007-11-29  Tobias Burnus  <burnus@net-b.de>
 
        PR fortran/34262
diff --git a/gcc/testsuite/gfortran.dg/result_in_spec_3.f90 b/gcc/testsuite/gfortran.dg/result_in_spec_3.f90
new file mode 100644 (file)
index 0000000..1cfb864
--- /dev/null
@@ -0,0 +1,15 @@
+! { dg-do compile }
+!
+! PR fortran/34248
+!
+! There was an ICE for assumed-length functions
+! if RESULT(...) was used and no value assigned
+! to the result variable.
+!
+character(*) FUNCTION test() RESULT(ctab)
+  ctab = "Hello"
+END function test
+
+FUNCTION test2() RESULT(res)
+  character(*) :: res
+END function test2