This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] PR80101: Fix ICE in store_data_bypass_p
- From: Segher Boessenkool <segher at kernel dot crashing dot org>
- To: Eric Botcazou <ebotcazou at adacore dot com>
- Cc: gcc-patches at gcc dot gnu dot org, Kelvin Nilsen <kdnilsen at linux dot vnet dot ibm dot com>
- Date: Fri, 7 Apr 2017 04:19:40 -0500
- Subject: Re: [PATCH] PR80101: Fix ICE in store_data_bypass_p
- Authentication-results: sourceware.org; auth=none
- References: <ceb839ae-0101-11d2-d5ce-b402c7dcfe51@linux.vnet.ibm.com> <3316696.3QEehbYcbO@polaris> <20170407074824.GU4402@gate.crashing.org> <2042575.QfhRid7aWy@polaris>
On Fri, Apr 07, 2017 at 10:39:03AM +0200, Eric Botcazou wrote:
> > Or we could just change "blockage" and wait for the next bug report.
>
> That's my suggestion, yes.
>
> > Alternatively, we can arrange for the bypass functions to not ICE. We
> > can do that specific to these rs6000 pipeline descriptions, by having
> > our own version of store_data_bypass_p; or we can make that function
> > work for all insns (its definition works fine for insn pairs where
> > not both the producer and consumer are SETs). That's what Kelvin's
> > patch does. What is the value in ICEing here?
>
> Telling the back-end writer that something may be wrong somewhere instead of
> silently accepting nonsense?
Why is it nonsense? The predicate gives the answer to the question
"given these insns A and B, does A feed data that B stores in memory".
That is a perfectly valid question to ask of any two insns.
> How long have all the assertions been there?
There are workarounds to this problem as well: mips_store_data_bypass_p,
added in 2006. mep_store_data_bypass_p, added in 2009 (the port has
been removed since then, of course).
Segher