public inbox for fortran@gcc.gnu.org
 help / color / mirror / Atom feed
From: Richard Biener <rguenther@suse.de>
To: gcc-patches@gcc.gnu.org
Cc: fortran@gcc.gnu.org
Subject: Re: [PATCH] Fix PR70937
Date: Mon, 09 May 2016 07:41:00 -0000	[thread overview]
Message-ID: <alpine.LSU.2.11.1605090939480.13384@t29.fhfr.qr> (raw)
In-Reply-To: <alpine.LSU.2.11.1605061328170.13384@t29.fhfr.qr>

On Fri, 6 May 2016, Richard Biener wrote:

> On Fri, 6 May 2016, Richard Biener wrote:
> 
> > 
> > The following patch fixes another case of missing DECL_EXPR in the FE.
> > 
> > Bootstrapped on x86_64-unknown-linux-gnu, testing in progress.
> > 
> > Ok for trunk?
> 
> Dominique noticed a FAIL early which is fixed by adjusting the patch
> to only handle TYPE_DECL TYPE_NAME like so:
> 
> Index: gcc/fortran/trans-decl.c
> ===================================================================
> --- gcc/fortran/trans-decl.c    (revision 235945)
> +++ gcc/fortran/trans-decl.c    (working copy)
> @@ -3818,6 +3818,12 @@ gfc_trans_vla_type_sizes (gfc_symbol *sy
>      }
>  
>    gfc_trans_vla_type_sizes_1 (type, body);
> +  /* gfc_build_qualified_array may have built this type but left 
> TYPE_NAME
> +     pointing to the original type whose type sizes we need to expose to
> +     the gimplifier unsharing.  */
> +  if (TYPE_NAME (type)
> +      && TREE_CODE (TYPE_NAME (type)) == TYPE_DECL)
> +    gfc_add_expr_to_block (body, build1 (DECL_EXPR, type, TYPE_NAME 
> (type)));
>  }
>  
>  
> I've re-started testing.
> 
> Ok with that change?

It doesn't work fully either.  Given also the original problem where
unshared IL exposes the need to visit the "unrelated" VLA types in
the gimplifier unsharing I tested the following patch instead which
resolves the issue as well.  Furthermore it can't regress things
and at this point is the easiest way forward to unbreak fortran.

Thus, bootstrapped and tested on x86_64-unknown-linux-gnu, applied to 
trunk.

I am testing if reverting my first fix is possible after this now.

Richard.

2016-05-09  Richard Biener  <rguenther@suse.de>

	PR fortran/70937
	* trans-decl.c: Include gimplify.h for unshare_expr.
	(gfc_trans_vla_one_sizepos): Unshare exprs before inserting
	them into the IL.

	* gfortran.dg/pr70937.f90: New testcase.

Index: gcc/fortran/trans-decl.c
===================================================================
*** gcc/fortran/trans-decl.c	(revision 235945)
--- gcc/fortran/trans-decl.c	(working copy)
*************** along with GCC; see the file COPYING3.
*** 45,50 ****
--- 45,51 ----
  /* Only for gfc_trans_code.  Shouldn't need to include this.  */
  #include "trans-stmt.h"
  #include "gomp-constants.h"
+ #include "gimplify.h"
  
  #define MAX_LABEL_VALUE 99999
  
*************** gfc_trans_vla_one_sizepos (tree *tp, stm
*** 3738,3744 ****
  
    var = gfc_create_var_np (TREE_TYPE (t), NULL);
    gfc_add_decl_to_function (var);
!   gfc_add_modify (body, var, val);
    if (TREE_CODE (t) == SAVE_EXPR)
      TREE_OPERAND (t, 0) = var;
    *tp = var;
--- 3739,3745 ----
  
    var = gfc_create_var_np (TREE_TYPE (t), NULL);
    gfc_add_decl_to_function (var);
!   gfc_add_modify (body, var, unshare_expr (val));
    if (TREE_CODE (t) == SAVE_EXPR)
      TREE_OPERAND (t, 0) = var;
    *tp = var;
 
Index: gcc/testsuite/gfortran.dg/pr70937.f90
===================================================================
*** gcc/testsuite/gfortran.dg/pr70937.f90	(revision 0)
--- gcc/testsuite/gfortran.dg/pr70937.f90	(working copy)
***************
*** 0 ****
--- 1,10 ----
+ ! { dg-do compile }
+ ! { dg-options "-flto" }
+   SUBROUTINE dbcsr_test_read_args(narg, args)
+     CHARACTER(len=*), DIMENSION(:), &
+       INTENT(out)         :: args
+     CHARACTER(len=80)     :: line
+     DO
+        args(narg) = line
+     ENDDO
+   END SUBROUTINE dbcsr_test_read_args

  reply	other threads:[~2016-05-09  7:41 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-06 11:19 Richard Biener
2016-05-06 11:29 ` Richard Biener
2016-05-09  7:41   ` Richard Biener [this message]
2016-05-10 17:43     ` Jerry DeLisle

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=alpine.LSU.2.11.1605090939480.13384@t29.fhfr.qr \
    --to=rguenther@suse.de \
    --cc=fortran@gcc.gnu.org \
    --cc=gcc-patches@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).