diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7a61593e7b8..fd94652f733 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2007-06-11 Bernd Schmidt + + * config/bfin/bfin.md (movdi_insn, movsi_insn, movv2hi_insn, + movhi_insn, movqi_insn, movsf_insn, movdf_insn): Don't allow constant + to memory moves. + 2007-06-11 Rafael Avila de Espindola * gcc/tree.c (signed_or_unsigned_type_for): New. diff --git a/gcc/config/bfin/bfin.md b/gcc/config/bfin/bfin.md index 630694a0f9c..d447825477b 100644 --- a/gcc/config/bfin/bfin.md +++ b/gcc/config/bfin/bfin.md @@ -424,7 +424,7 @@ (define_insn_and_split "movdi_insn" [(set (match_operand:DI 0 "nonimmediate_operand" "=x,mx,r") (match_operand:DI 1 "general_operand" "iFx,r,mx"))] - "GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM" + "GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) == REG" "#" "reload_completed" [(set (match_dup 2) (match_dup 3)) @@ -524,7 +524,7 @@ (define_insn "*movsi_insn" [(set (match_operand:SI 0 "nonimmediate_operand" "=da,x*y,da,x,x,x,da,mr") (match_operand:SI 1 "general_operand" "da,x*y,xKs7,xKsh,xKuh,ix,mr,da"))] - "GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM" + "GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) == REG" "@ %0 = %1; %0 = %1; @@ -562,7 +562,7 @@ [(set (match_operand:V2HI 0 "nonimmediate_operand" "=da,da,d,dm") (match_operand:V2HI 1 "general_operand" "i,di,md,d"))] - "GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM" + "GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) == REG" "@ # %0 = %1; @@ -584,7 +584,7 @@ (define_insn "*movhi_insn" [(set (match_operand:HI 0 "nonimmediate_operand" "=x,da,x,d,mr") (match_operand:HI 1 "general_operand" "x,xKs7,xKsh,mr,d"))] - "GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM" + "GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) == REG" { static const char *templates[] = { "%0 = %1;", @@ -608,7 +608,7 @@ (define_insn "*movqi_insn" [(set (match_operand:QI 0 "nonimmediate_operand" "=x,da,x,d,mr") (match_operand:QI 1 "general_operand" "x,xKs7,xKsh,mr,d"))] - "GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM" + "GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) == REG" "@ %0 = %1; %0 = %1 (X); @@ -621,7 +621,7 @@ (define_insn "*movsf_insn" [(set (match_operand:SF 0 "nonimmediate_operand" "=x,x,da,mr") (match_operand:SF 1 "general_operand" "x,Fx,mr,da"))] - "GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM" + "GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) == REG" "@ %0 = %1; # @@ -632,7 +632,7 @@ (define_insn_and_split "movdf_insn" [(set (match_operand:DF 0 "nonimmediate_operand" "=x,mx,r") (match_operand:DF 1 "general_operand" "iFx,r,mx"))] - "GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM" + "GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) == REG" "#" "reload_completed" [(set (match_dup 2) (match_dup 3))