This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: rl78 vs cse vs memory_address_addr_space


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]