tege@sics.se (Torbj|rn Granlund) (10/22/89)
x(p)
char *p;
{
return ((p[0] & ~' ') == (p[1] & ~' '));
}
Code like this used to generate a subreg expression which was not
handled correctly. This has been fixed in my current version by
adding a
"(GET_CODE (operands[0]) != GET_CODE (operands[1]))"
rejection test to the recognition patterns for compare HI and QI, in
order to avoid constraint problems if the register-register case
arises, and allowing SUBREG where REG is allowed in extend_and_branch.
Please apply these patches. Ignore any line offsets, caused by
additional changes in my sources.
*** aux-output.c~ Sat Oct 21 05:41:36 1989
- --- aux-output.c Sat Oct 21 23:44:41 1989
***************
*** 330,336 ****
op1 = extend_const (op1, extop, GET_MODE (op0), SImode);
op0 = ensure_extended (op0, extop);
}
! else if (code0 == REG && code1 == REG)
{
/* I could do this case without extension, by using the virtual
register address (but that would lose for global regs). */
- --- 330,337 ----
op1 = extend_const (op1, extop, GET_MODE (op0), SImode);
op0 = ensure_extended (op0, extop);
}
! else if ((code0 == REG || code0 == SUBREG)
! && (code1 == REG || code1 == SUBREG))
{
/* I could do this case without extension, by using the virtual
register address (but that would lose for global regs). */
*** md~ Sat Oct 21 03:27:36 1989
- --- md Sat Oct 21 23:31:44 1989
***************
*** 188,194 ****
[(set (cc0)
(compare (match_operand:HI 0 "nonimmediate_operand" "r,m")
(match_operand:HI 1 "nonimmediate_operand" "m,r")))]
! ""
"*
{
rtx br_insn = NEXT_INSN (insn);
- --- 188,194 ----
[(set (cc0)
(compare (match_operand:HI 0 "nonimmediate_operand" "r,m")
(match_operand:HI 1 "nonimmediate_operand" "m,r")))]
! "(GET_CODE (operands[0]) != GET_CODE (operands[1]))"
"*
{
rtx br_insn = NEXT_INSN (insn);
***************
*** 260,266 ****
[(set (cc0)
(compare (match_operand:QI 0 "nonimmediate_operand" "r,m")
(match_operand:QI 1 "nonimmediate_operand" "m,r")))]
! ""
"*
{
rtx br_insn = NEXT_INSN (insn);
- --- 260,266 ----
[(set (cc0)
(compare (match_operand:QI 0 "nonimmediate_operand" "r,m")
(match_operand:QI 1 "nonimmediate_operand" "m,r")))]
! "(GET_CODE (operands[0]) != GET_CODE (operands[1]))"
"*
{
rtx br_insn = NEXT_INSN (insn);
------- End of Blind-Carbon-Copy