On Mon, Jul 06, 2015 at 04:45:35PM -0400, DJ Delorie wrote: > Combine gets as far as this: > > Trying 5 -> 9: > Failed to match this instruction: > (parallel [ > (set (mem/v/j:QI (const_int 240 [0xf0]) [0 MEM[(volatile union > un_per0 *)240B].BIT.no4+0 S1 A16]) > (ior:QI (mem/v/j:QI (const_int 240 [0xf0]) [0 MEM[(volatile union > un_per0 *)240B].BIT.no4+0 S1 A16]) > (const_int 16 [0x10]))) > (set (reg/f:HI 43) > (const_int 240 [0xf0])) > ]) > > (the set is left behind because it's used for the second assignment) > > Both of those insns in the parallel are valid rl78 insns. I tried > adding that parallel as a define-and-split but combine doesn't split > it at the point where it inserts it, so it doesn't work right. If it > reduced those four instructions to the two in the parallel, but > without the parallel, it would probably work too.
Did you try just a define_split instead? Ugly, but it should work I think. Segher