public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Bernd Schmidt <bschmidt@redhat.com>
To: Eric Botcazou <ebotcazou@libertysurf.fr>,
	       Richard Sandiford <rdsandiford@googlemail.com>
Cc: gcc-patches@gcc.gnu.org,
	Matthew Fortune <Matthew.Fortune@imgtec.com>,
	       Bernd Edlinger <bernd.edlinger@hotmail.de>,
	       Nick Clifton <nickc@redhat.com>
Subject: Re: Is it OK for rtx_addr_can_trap_p_1 to attempt to compute the frame layout? (was Re: [PATCH] Skip re-computing the mips frame info after reload completed)
Date: Fri, 29 Jan 2016 01:09:00 -0000	[thread overview]
Message-ID: <56AABBC5.6090309@redhat.com> (raw)
In-Reply-To: <1634352.Ak3Qm2WKut@polaris>

On 01/28/2016 12:36 AM, Eric Botcazou wrote:
>> [cc-ing Eric as RTL maintainer]
>
> Sorry for the delay, the message apparently bounced]
>
>> IMO the problem is that rtx_addr_can_trap_p_1 duplicates a large
>> bit of LRA/reload logic:
>>
>> [...]
>>
>> Under the current interface macros like INITIAL_ELIMINATION_OFFSET
>> are expected to trigger the calculation of the target's frame layout
>> (since you need that information to answer the question).
>> To me it seems wrong that we're attempting to call that sort of
>> macro in a query routine like rtx_addr_can_trap_p_1.
>
> I'm a little uncomfortable stepping in here because, while I essentially share
> your objections and was opposed to the patch (I was almost sure that it would
> introduce maintainance issues for no practical benefit), I didn't imagine that
> such a failure mode would have been possible (computing an approximation of
> the frame layout after reload being problematic) so I didn't really object to
> being overruled after seeing Bernd's patch...
>
>> IMO we should cache the information we need@the start of each
>> LRA/reload cycle.  This will be more robust, because there will
>> be no accidental changes to global state either during or after
>> LRA/reload.  It will also be more efficient because
>> rtx_addr_can_trap_p_1 can read the cached variables rather
>> than calling back into the target.
>
> That would be a better design for sure and would eliminate the maintainance
> issues I was originally afraid of.
>
> My recommendation would be to back out Bernd's patch for GCC 6.0 (again, it
> doesn't fix any regression and, more importantly, any bug in real software,
> but only corner case bugs in dumb computer-generated testcases) but with the
> commitment to address the underlying issue for GCC 7.0 and backport the fix to
> GCC 6.x unless really impracticable.  That being said, it's ultimately Jakub
> and Richard's call.

I'm on the fence; I do think the original problem is an issue we should 
fix, but I'm also not terribly happy with the implementation we have 
right now. Besides the issues already mentioned, doesn't it kind of 
assume these offsets are constant (which they definitely aren't, 
consider arg pushes for example)?

I think a better approach might be to just mark accesses at known 
locations in the frame, or arg pushes, as MEM_NOTRAP_P, and consider 
accesses with non-constant or calculated offsets as potentially trapping.


Bernd

  reply	other threads:[~2016-01-29  1:09 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-23 13:25 [PATCH] Skip re-computing the mips frame info after reload completed Bernd Edlinger
2016-01-24 21:57 ` Matthew Fortune
2016-01-25  7:44   ` AW: " Bernd Edlinger
2016-01-25 19:57     ` Matthew Fortune
2016-01-26 21:18       ` Is it OK for rtx_addr_can_trap_p_1 to attempt to compute the frame layout? (was Re: [PATCH] Skip re-computing the mips frame info after reload completed) Richard Sandiford
2016-01-27 21:09         ` Bernd Edlinger
2016-01-28 22:17           ` Richard Sandiford
2016-01-29 17:54             ` Bernd Edlinger
2016-01-27 23:36         ` Eric Botcazou
2016-01-29  1:09           ` Bernd Schmidt [this message]
2016-01-29 15:18             ` Bernd Edlinger
2016-01-29 15:41             ` Jakub Jelinek
2016-01-29 15:47               ` Bernd Schmidt
2016-01-29 19:42                 ` Bernd Edlinger
2016-02-01 12:18                   ` Bernd Schmidt
2016-02-01 12:49                     ` Richard Biener
2016-02-01 12:51                       ` Bernd Schmidt
2016-02-01 13:10                         ` Richard Biener
2016-02-01 13:19                     ` AW: " Bernd Edlinger

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=56AABBC5.6090309@redhat.com \
    --to=bschmidt@redhat.com \
    --cc=Matthew.Fortune@imgtec.com \
    --cc=bernd.edlinger@hotmail.de \
    --cc=ebotcazou@libertysurf.fr \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=nickc@redhat.com \
    --cc=rdsandiford@googlemail.com \
    /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).