]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR fortran/34848 (internal compiler error with optional argument of character...
authorTobias Burnus <burnus@net-b.de>
Sat, 26 Jan 2008 20:44:49 +0000 (21:44 +0100)
committerTobias Burnus <burnus@gcc.gnu.org>
Sat, 26 Jan 2008 20:44:49 +0000 (21:44 +0100)
2008-01-26  Tobias Burnus  <burnus@net-b.de>

        PR fortran/34848
        * trans-expr.c (gfc_conv_function_call): Don't call
        gfc_add_interface_mapping if the expression is NULL.

2008-01-26  Tobias Burnus  <burnus@net-b.de>

        PR fortran/34848
        * gfortran.dg/missing_optional_dummy_5.f90: New.

From-SVN: r131876

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

index 0c8f4a236ca04544d702faf76350818165443998..9e0c2f0fcec7be8cfe765e6a15cfd2d0f578ef4e 100644 (file)
@@ -1,3 +1,9 @@
+2008-01-26  Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/34848
+       * trans-expr.c (gfc_conv_function_call): Don't call
+       gfc_add_interface_mapping if the expression is NULL.
+
 2008-01-26  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
        PR fortran/31610
index 9e30a9938430426956161eece2bc417e7b123dff..89bc3c28537f1fac0310410750669363097ed98f 100644 (file)
@@ -2506,7 +2506,7 @@ gfc_conv_function_call (gfc_se * se, gfc_symbol * sym,
            }
        }
 
-      if (fsym && need_interface_mapping)
+      if (fsym && need_interface_mapping && e)
        gfc_add_interface_mapping (&mapping, fsym, &parmse, e);
 
       gfc_add_block_to_block (&se->pre, &parmse.pre);
index 6974e2177cfcdfa7b8cd6426d392a31f63d49588..65924d2ce81b8af6aa43914d1c738f4b9fc9c87a 100644 (file)
@@ -1,3 +1,8 @@
+2008-01-26  Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/34848
+       * gfortran.dg/missing_optional_dummy_5.f90: New.
+
 2008-01-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
 
        * gcc.dg/tree-ssa/20070302-1.c (baz): Mark with attribute
diff --git a/gcc/testsuite/gfortran.dg/missing_optional_dummy_5.f90 b/gcc/testsuite/gfortran.dg/missing_optional_dummy_5.f90
new file mode 100644 (file)
index 0000000..2be90fd
--- /dev/null
@@ -0,0 +1,29 @@
+! { dg-do compile }
+! { dg-options "-fdump-tree-original" }
+!
+! PR fortran/34848
+! 
+! This was before giving an ICE; additionally
+! the "0" for the string size of the absent optional
+! argument was missing.
+!
+module krmod
+contains
+ subroutine doit()
+   implicit none
+    real :: doit1(2)
+    doit1 = tm_doit()
+   return
+ end subroutine doit
+ function tm_doit(genloc)
+   implicit none
+   character, optional  :: genloc
+   real :: tm_doit(2)
+   tm_doit = 42.0 
+ end function tm_doit
+end module krmod
+
+! { dg-final { scan-tree-dump " tm_doit \\(&parm.7, 0B, 0\\);" "original" } }
+! { dg-final { cleanup-tree-dump "original" } }
+! { dg-final { cleanup-modules "pr22146" } }
+