public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
From: "rguenther at suse dot de" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug target/63679] [5.0 Regression][AArch64] Failure to constant fold.
Date: Mon, 24 Nov 2014 11:31:00 -0000	[thread overview]
Message-ID: <bug-63679-4-H2pIQ3lUYs@http.gcc.gnu.org/bugzilla/> (raw)
In-Reply-To: <bug-63679-4@http.gcc.gnu.org/bugzilla/>

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63679

--- Comment #18 from rguenther at suse dot de <rguenther at suse dot de> ---
On Mon, 24 Nov 2014, belagod at gcc dot gnu.org wrote:

> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63679
> 
> --- Comment #17 from Tejas Belagod <belagod at gcc dot gnu.org> ---
> > -
> >  	    /* Do a block move either if the size is so small as to make
> >  	       each individual move a sub-unit move on average, or if it
> > -	       is so large as to make individual moves inefficient.  */
> > +	       is so large as to make individual moves inefficient.  Reuse
> > +	       the same costs logic as we use in the SRA passes.  */
> > +            unsigned max_scalarization_size
> > +	      = optimize_function_for_size_p (cfun)
> > +	        ? PARAM_VALUE (PARAM_SRA_MAX_SCALARIZATION_SIZE_SIZE)
> > +		: PARAM_VALUE (PARAM_SRA_MAX_SCALARIZATION_SIZE_SPEED);
> > +
> >  	    if (size > 0
> >  		&& num_nonzero_elements > 1
> >  		&& (size < num_nonzero_elements
> > -		    || !can_move_by_pieces (size, align)))
> > +		    || size > max_scalarization_size))
> >  	      {
> >  		if (notify_temp_creation)
> >  		  return GS_ERROR;
> 
> I think both move_by_pieces and SRA can co-exist here:
> 
> diff --git a/gcc/gimplify.c b/gcc/gimplify.c
> index 8e3dd83..be51ce7 100644
> --- a/gcc/gimplify.c
> +++ b/gcc/gimplify.c
> @@ -70,6 +70,7 @@ along with GCC; see the file COPYING3.  If not see
>  #include "omp-low.h"
>  #include "gimple-low.h"
>  #include "cilk.h"
> +#include "params.h"
> 
>  #include "langhooks-def.h"    /* FIXME: for lhd_set_decl_assembler_name */
>  #include "tree-pass.h"        /* FIXME: only for PROP_gimple_any */
> @@ -3895,7 +3896,6 @@ gimplify_init_constructor (tree *expr_p, gimple_seq
> *pre_p, gimple_seq *post_p,
>                        DECL_ATTRIBUTES (current_function_decl))))
>        {
>          HOST_WIDE_INT size = int_size_in_bytes (type);
>         unsigned int align;
> 
>          /* ??? We can still get unbounded array types, at least
>             from the C++ front end.  This seems wrong, but attempt
> @@ -3907,20 +3907,19 @@ gimplify_init_constructor (tree *expr_p, gimple_seq
> *pre_p, gimple_seq *post_p,
>            TREE_TYPE (ctor) = type = TREE_TYPE (object);
>            }
> 
>         /* Find the maximum alignment we can assume for the object.  */
>         /* ??? Make use of DECL_OFFSET_ALIGN.  */
>         if (DECL_P (object))
>           align = DECL_ALIGN (object);
>         else
>           align = TYPE_ALIGN (type);
> 
>          /* Do a block move either if the size is so small as to make
>             each individual move a sub-unit move on average, or if it
> -           is so large as to make individual moves inefficient.  */
> +           is so large as to make individual moves inefficient.  Reuse
> +           the same costs logic as we use in the SRA passes.  */
> +            unsigned max_scalarization_size
> +          = optimize_function_for_size_p (cfun)
> +            ? PARAM_VALUE (PARAM_SRA_MAX_SCALARIZATION_SIZE_SIZE)
> +        : PARAM_VALUE (PARAM_SRA_MAX_SCALARIZATION_SIZE_SPEED);
> +
>          if (size > 0
>          && num_nonzero_elements > 1
>          && (size < num_nonzero_elements
> +            || size > max_scalarization_size
>             || !can_move_by_pieces (size, align))
>            {
>          if (notify_temp_creation)
>            return GS_ERROR;
> 
> If it isn't profitable to do an SRA, we can fall-back to the backend hook to
> move it by pieces. This way, I think we'll have move opportunity for
> optimization.

But that wouldn't fix the AARCH64 case as the backend says "no" here
anyway?
>From gcc-bugs-return-468243-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Mon Nov 24 11:32:32 2014
Return-Path: <gcc-bugs-return-468243-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 28599 invoked by alias); 24 Nov 2014 11:32:31 -0000
Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Id: <gcc-bugs.gcc.gnu.org>
List-Archive: <http://gcc.gnu.org/ml/gcc-bugs/>
List-Post: <mailto:gcc-bugs@gcc.gnu.org>
List-Help: <mailto:gcc-bugs-help@gcc.gnu.org>
Sender: gcc-bugs-owner@gcc.gnu.org
Delivered-To: mailing list gcc-bugs@gcc.gnu.org
Received: (qmail 28572 invoked by uid 48); 24 Nov 2014 11:32:28 -0000
From: "kugan at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug target/64045] New: fortran.dg/pr45636.f90 fails for AArch64 - memcpy and memset are not combined
Date: Mon, 24 Nov 2014 11:32:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: new
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: target
X-Bugzilla-Version: 5.0
X-Bugzilla-Keywords:
X-Bugzilla-Severity: normal
X-Bugzilla-Who: kugan at gcc dot gnu.org
X-Bugzilla-Status: UNCONFIRMED
X-Bugzilla-Priority: P3
X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org
X-Bugzilla-Target-Milestone: ---
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields: bug_id short_desc product version bug_status bug_severity priority component assigned_to reporter
Message-ID: <bug-64045-4@http.gcc.gnu.org/bugzilla/>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/
Auto-Submitted: auto-generated
MIME-Version: 1.0
X-SW-Source: 2014-11/txt/msg02715.txt.bz2
Content-length: 548

https://gcc.gnu.org/bugzilla/show_bug.cgi?idd045

            Bug ID: 64045
           Summary: fortran.dg/pr45636.f90 fails for AArch64 - memcpy and
                    memset are not combined
           Product: gcc
           Version: 5.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: kugan at gcc dot gnu.org

In current trunk, fortran.dg/pr45636.f90 fails for AArch64 as memcpy and memset
are not combined.


  parent reply	other threads:[~2014-11-24 11:31 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <bug-63679-4@http.gcc.gnu.org/bugzilla/>
2014-10-30 10:04 ` belagod at gcc dot gnu.org
2014-10-30 10:10 ` rguenth at gcc dot gnu.org
2014-11-04 11:41 ` belagod at gcc dot gnu.org
2014-11-04 16:32 ` belagod at gcc dot gnu.org
2014-11-04 20:58 ` rguenth at gcc dot gnu.org
2014-11-20 12:44 ` rguenth at gcc dot gnu.org
2014-11-20 16:21 ` belagod at gcc dot gnu.org
2014-11-20 16:49 ` pinskia at gcc dot gnu.org
2014-11-21  8:48 ` rguenth at gcc dot gnu.org
2014-11-21 10:17 ` rguenth at gcc dot gnu.org
2014-11-21 10:26 ` belagod at gcc dot gnu.org
2014-11-21 10:36 ` rguenther at suse dot de
2014-11-21 10:54 ` belagod at gcc dot gnu.org
2014-11-21 11:25 ` jgreenhalgh at gcc dot gnu.org
2014-11-21 18:20 ` jgreenhalgh at gcc dot gnu.org
2014-11-24  8:52 ` rguenther at suse dot de
2014-11-24 11:16 ` belagod at gcc dot gnu.org
2014-11-24 11:31 ` rguenther at suse dot de [this message]
2014-11-24 12:01 ` jgreenhalgh at gcc dot gnu.org
2014-11-24 12:19 ` rguenther at suse dot de
2014-11-24 13:45 ` rguenth at gcc dot gnu.org
2014-11-24 13:45 ` rguenth at gcc dot gnu.org
2014-11-24 14:07 ` rguenth at gcc dot gnu.org
2015-02-07 10:55 ` [Bug target/63679] [5 " jakub at gcc dot gnu.org
2015-02-09  9:08 ` rguenth at gcc dot gnu.org
2015-02-09 10:10 ` jakub at gcc dot gnu.org
2015-02-09 12:20 ` belagod at gcc dot gnu.org
2015-02-09 13:17 ` rguenther at suse dot de
2015-02-09 13:34 ` belagod at gcc dot gnu.org
2015-03-12 16:53 ` [Bug target/63679] [5 / 6 " ramana at gcc dot gnu.org
2015-07-28 17:15 ` [Bug target/63679] [5/6 " alalaw01 at gcc dot gnu.org
2015-07-28 18:36 ` pinskia at gcc dot gnu.org
2015-07-29  7:23 ` rguenther at suse dot de
2015-07-29 17:50 ` alalaw01 at gcc dot gnu.org
2015-08-03 15:38 ` alalaw01 at gcc dot gnu.org
2015-08-04  9:30 ` rguenther at suse dot de

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=bug-63679-4-H2pIQ3lUYs@http.gcc.gnu.org/bugzilla/ \
    --to=gcc-bugzilla@gcc.gnu.org \
    --cc=gcc-bugs@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).