public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Richard Earnshaw <rearnsha@arm.com>
To: Richard Sandiford <richard.sandiford@linaro.org>
Cc: gcc-patches@gcc.gnu.org, patches@linaro.org
Subject: Re: PR target/46329: Reject Neon structure constants
Date: Mon, 18 Apr 2011 10:40:00 -0000	[thread overview]
Message-ID: <1303119516.15603.6.camel@e102346-lin.cambridge.arm.com> (raw)
In-Reply-To: <g41v1ijoer.fsf@linaro.org>


On Mon, 2011-04-04 at 11:34 +0100, Richard Sandiford wrote:
> This patch fixed PR target/46329, which is a problem that occurs
> when trying to reload:
> 
>     (set (reg:OI foo) (const_int 0))
> 
> There is no move alternative for moving constants directly into large
> numbers of VFPs, and it probably isn't going to be sensible to do that
> for all constants, even if proper support for large-int constants is
> implemented in future.  It also isn't feasible to use the normal ARM
> constant pool, since the vldN and vstN instructions don't support the
> required addressing modes.
> 
> At the moment, reload instead tries to load the constant through GPRs,
> having been told to do so by coproc_secondary_reload_class.
> That doesn't work either because there aren't enough (consecutive)
> GPRs to go around.
> 
> Instead, this patch forces constants to the target-independent
> constant pool.  Even if we do optimise the handling for "easy"
> constants like 0 in future, I think we'd still need this code
> for the more complicated cases.
> 
> An alternative would have been to make preferred_reload_class
> return NO_REGS, but we should get better code by exposing the
> restriction earlier.
> 
> The patch applies on top of:
> 
>     http://gcc.gnu.org/ml/gcc-patches/2011-04/msg00194.html
>     http://gcc.gnu.org/ml/gcc-patches/2011-04/msg00195.html
> 
> Tested on arm-linux-gnueabi.  OK to install?
> 
> Richard
> 

I'm uncomfortable about this.  Generally the ARM port doesn't work well
with the target-independent constant pool and it's better to assert that
this is empty when it comes to final assembly generation.  Can you
clarify by way of example how this patch is working please (ie some
sample output).

R.



  reply	other threads:[~2011-04-18  9:39 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-04 10:35 Richard Sandiford
2011-04-18 10:40 ` Richard Earnshaw [this message]
2011-04-18 10:47   ` Richard Sandiford
2011-04-19  9:52     ` Richard Earnshaw

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=1303119516.15603.6.camel@e102346-lin.cambridge.arm.com \
    --to=rearnsha@arm.com \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=patches@linaro.org \
    --cc=richard.sandiford@linaro.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).