Patch to fix gcc.c-torture/compile/20010102-1.c on IA64 HP-UX

Peter Bergner bergner@vnet.ibm.com
Fri Oct 31 20:29:00 GMT 2008


On Thu, 2008-10-30 at 12:38 -0600, Jeff Law wrote:
> Peter Bergner wrote:
[snip]
> > Index: config/ia64/predicates.md
> > ===================================================================
> > --- config/ia64/predicates.md   (revision 140417)
> > +++ config/ia64/predicates.md   (working copy)
> > @@ -585,6 +585,6 @@ (define_predicate "ar_pfs_reg_operand"
> >  (define_predicate "basereg_operand"
> >    (match_operand 0 "register_operand")
> >  {
> > -  return REG_P (op) && REG_POINTER (op);
> > +  return REG_P (op) && REG_POINTER (regno_reg_rtx[ORIGINAL_REGNO (op)]);
> >  })
> >
> We shouldn't be hacking up backends to deal with this problem, it's 
> entirely the wrong approach.

I have to agree with Jakub, why not?  As Jakub mentioned, REG_POINTER
cannot make sense on a hard register since it can contain many unrelated
values, some being pointers and some not.  We actually already hit and
fixed a problem where we were setting the REG_POINTER attribute on a
hard register:

    http://gcc.gnu.org/ml/gcc-patches/2008-06/msg01425.html

Or are you saying this predicate should never be called with a
hard register?

Peter





More information about the Gcc-patches mailing list