ICE on m68k-linux in 3_4-branch

Bernardo Innocenti bernie@develer.com
Tue Jun 1 14:52:00 GMT 2004


Andreas Schwab wrote:
> Bernardo Innocenti <bernie@develer.com> writes:
> 
>>This is the pattern in m68k.md:
>>
>>---cut---
>>(define_expand "movstrictqi"
>>  [(set (strict_low_part (match_operand:QI 0 "nonimmediate_operand" ""))
>>        (match_operand:QI 1 "general_src_operand" ""))]
>>  ""
>>  "")
>>
>>(define_insn ""
>>  [(set (strict_low_part (match_operand:QI 0 "nonimmediate_operand" "+dm"))
>>        (match_operand:QI 1 "general_src_operand" "dmSn"))]
>>  "!TARGET_COLDFIRE"
>>  "* return output_move_strictqi (operands);")
>>
>>(define_insn ""
>>  [(set (strict_low_part (match_operand:QI 0 "nonimmediate_operand" "+d,m"))
>>        (match_operand:QI 1 "general_src_operand" "dmn,d"))]
>>  "TARGET_COLDFIRE"
>>  "* return output_move_strictqi (operands);")
>>---cut---
> 
> 
> These patterns has been like this since a very long time.  This is from
> old-gcc:
> 
> revision 1.141
> date: 1997/05/18 11:48:25;  author: kenner;  state: Exp;  lines: +30 -24
> (movstrict*): Changed into define_expands.  Split insns into m68k and
> coldfire specific versions with appropriate constraints.

This RTL expression should match the pattern and select the
!TARGET_COLDFIRE insn:

 (set (strict_low_part (reg:QI 0 %d0))
        (const_int 1 [0x1])) -1 (nil) 

The constant -1 should satisfy the "n" constraint, doesn't it?

I'm still wondering why the documentation for strict_low_part
in gccint.texi doesn't look like this RTX.

-- 
  // Bernardo Innocenti - Develer S.r.l., R&D dept.
\X/  http://www.develer.com/



More information about the Gcc mailing list