[committed] PR 90744

Message ID 2ef6a3ab-bb6c-59a3-74cc-8322bd1f342f@netcologne.de
State New
Headers show
Series
  • [committed] PR 90744
Related show

Commit Message

Thomas Koenig June 8, 2019, 1:54 p.m.
Hello world,

I have just committed the attached patch to trunk as obvious an simple.
The problem, which led to wrong code, was that copying the "deferred"
attribute from the dummy to the formal argument a) makes no sense b)
led to wrong code. The analysis and the first working version of the
patch was done by Tomáš Trnka (thanks!).

I will also backport, since this is a 7/8/9/10 regression.

Regards

	Thomas

2019-06-08  Thomas Koenig  <tkoenig@gcc.gnu.org>
	Tomáš Trnka  <trnka@scm.com>

	PR fortran/90744
	* trans-types.c (get_formal_from_actual_arglist): Unset typespec
	flags which make no sense for procedures without explicit
	interface.

2019-06-08  Thomas Koenig  <tkoenig@gcc.gnu.org>
	Tomáš Trnka  <trnka@scm.com>

	PR fortran/90744
	* gfortran.dg/deferred_character_33.f90: New test.
	* gfortran.dg/deferred_character_33a.f90: New test.

Patch

Index: trans-types.c
===================================================================
--- trans-types.c	(Revision 271945)
+++ trans-types.c	(Arbeitskopie)
@@ -3005,6 +3005,9 @@  get_formal_from_actual_arglist (gfc_symbol *sym, g
 	  else
 	    {
 	      s->ts = a->expr->ts;
+	      s->ts.deferred = 0;
+	      s->ts.is_iso_c = 0;
+	      s->ts.is_c_interop = 0;
 	      s->attr.flavor = FL_VARIABLE;
 	      if (a->expr->rank > 0)
 		{