I'd got confused when doing the genrecog position thing, and converted the match_op_dup '0'-based positions into XVECEXP0 rather than XEXP.
The patch below restores powerpc64's insn-recog.c to the form it had before the changes. Applied as obvious. Sorry for the breakage. Richard gcc/ PR bootstrap/49195 * genrecog.c (add_to_sequence): Use XEXP rather than XVECEXP for match_op_dup. Index: gcc/genrecog.c =================================================================== --- gcc/genrecog.c 2011-05-28 08:37:01.000000000 +0100 +++ gcc/genrecog.c 2011-05-28 08:37:01.000000000 +0100 @@ -913,10 +913,10 @@ add_to_sequence (rtx pattern, struct dec test = new_decision_test (DT_accept_op, &place); test->u.opno = XINT (pattern, 0); - subpos_ptr = &pos->xvecexp0s; + subpos_ptr = &pos->xexps; for (i = 0; i < (size_t) XVECLEN (pattern, 1); i++) { - subpos = next_position (subpos_ptr, pos, POS_XVECEXP0, i); + subpos = next_position (subpos_ptr, pos, POS_XEXP, i); sub = add_to_sequence (XVECEXP (pattern, 1, i), &sub->success, subpos, insn_type, 0); subpos_ptr = &subpos->next;