On Fri, Sep 19, 2014 at 04:10:34PM +0100, Andreas Krebbel wrote:
> On 09/19/2014 02:59 PM, James Greenhalgh wrote:
> >
> > Hi,
> >
> > After https://gcc.gnu.org/ml/gcc-patches/2014-09/msg01615.html we error
> > on the use of constraints in define_splits, define_expands and
> > define_peephole2s. These are never looked at by the compiler, and so
> > have no reason to be set.
> >
> > I expect there will be more fallout as Jan's auto-builder makes its way
> > through ports I haven't tested, I'll fix those up as they come up.
> >
> > These are build failures, and the fixes are "obvious", but I don't know
> > my way around these ports, so I'd like an explicit maintainer ack.
> >
> > For testing, I've just checked that the build error is resolved. In
> > principal, these are not functional changes as the constraints are
> > not looked at.
>
> S/390 bootstrap fails with:
> gcc/gcc/config/s390/s390.md:8397: operand 5 missing output reload
>
> For the branch on index instruction we have a define_insn_and_split with a
> single alternative forcing a split before reload. In this pattern to my
> understanding the constraints are not really required.
Yes, if that is the existing supported behaviour for MATCH_OPERANDs (it
must be or your pattern would have been failing before), I don't want to
make MATCH_SCRATCH more restrictive.
The fix is a one-liner. Jeff, I presume we still want to permit this?
The alternate fix would be to make this an error in both cases.
Ok?
Thanks,
James
---
2014-09-14 James Greenhalgh <james.greenha...@arm.com>
* genrecog.c (validate_pattern): Allow empty constraints in
a match_scratch.
diff --git a/gcc/genrecog.c b/gcc/genrecog.c
index 0134585..c1dc8fa 100644
--- a/gcc/genrecog.c
+++ b/gcc/genrecog.c
@@ -461,6 +461,7 @@ validate_pattern (rtx pattern, rtx insn, rtx set, int set_code)
/* If a MATCH_SCRATCH is used in a context requiring an write-only
or read/write register, validate that. */
if (set_code == '='
+ && constraints0
&& constraints0 != '='
&& constraints0 != '+')
{