This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
ppc PREDICATE_CODES (any_operand)
- From: Aldy Hernandez <aldyh at redhat dot com>
- To: dje at watson dot ibm dot com
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Mon, 18 Mar 2002 15:20:30 +1100
- Subject: ppc PREDICATE_CODES (any_operand)
hi david.
in debugging daniel egger's problem, i noticed that altivec was
completely broken on mainline.
your patch of:
2002-03-12 David Edelsohn <edelsohn@gnu.org>
* config/rs6000/rs6000.h (PREDICATE_CODES): Add any_operand and
zero_constant.
caused the *set_vrsave_internal pattern never to match because
genrecog.c, through a very twisty maze, concluded that any_operand
and *set_vrsave_internal could never be both true
(maybe_both_true*).
this is because any_operand can be used as a parallel (see
*return_and_restore_fpregs_di), but the predicate does not reflect so.
you probably didn't catch this because the only match_parallel following
*return_and_restore_fpregs_di is *set_vrsave_internal ;-)
applied the following patch to mainline as obvious.
cheers
2002-03-18 Aldy Hernandez <aldyh@redhat.com>
* config/rs6000/rs6000.h (PREDICATE_CODES): Add PARALLEL to
any_operand.
Index: config/rs6000/rs6000.h
===================================================================
RCS file: /cvs/uberbaum/gcc/config/rs6000/rs6000.h,v
retrieving revision 1.195
diff -c -p -r1.195 rs6000.h
*** rs6000.h 2002/03/13 16:57:47 1.195
--- rs6000.h 2002/03/18 04:18:28
*************** extern char rs6000_reg_names[][8]; /* re
*** 2730,2736 ****
#define PREDICATE_CODES \
{"any_operand", {CONST_INT, CONST_DOUBLE, CONST, SYMBOL_REF, \
! LABEL_REF, SUBREG, REG, MEM}}, \
{"zero_constant", {CONST_INT, CONST_DOUBLE, CONST, SYMBOL_REF, \
LABEL_REF, SUBREG, REG, MEM}}, \
{"short_cint_operand", {CONST_INT}}, \
--- 2730,2736 ----
#define PREDICATE_CODES \
{"any_operand", {CONST_INT, CONST_DOUBLE, CONST, SYMBOL_REF, \
! LABEL_REF, SUBREG, REG, MEM, PARALLEL}}, \
{"zero_constant", {CONST_INT, CONST_DOUBLE, CONST, SYMBOL_REF, \
LABEL_REF, SUBREG, REG, MEM}}, \
{"short_cint_operand", {CONST_INT}}, \