diff options
author | Denis Chertykov <denisc@overta.ru> | 2001-07-13 19:13:55 +0000 |
---|---|---|
committer | Denis Chertykov <denisc@gcc.gnu.org> | 2001-07-13 23:13:55 +0400 |
commit | 48ccfb4086add7f319242fe6c2ec178788dd278f (patch) | |
tree | 11e866ad6f4b905974579d4a1ec4f4241d46285b /gcc | |
parent | 5a4aeb03fa1133349f34dc1132cd5c231d2736e1 (diff) | |
download | gcc-48ccfb4086add7f319242fe6c2ec178788dd278f.zip gcc-48ccfb4086add7f319242fe6c2ec178788dd278f.tar.gz gcc-48ccfb4086add7f319242fe6c2ec178788dd278f.tar.bz2 |
avr.md (strlenhi): PARALLEL keyword removed.
* config/avr/avr.md (strlenhi): PARALLEL keyword removed.
* config/avr/avr.c (legitimate_address_p): Return value changed
from letter to register classes. For better debugging.
From-SVN: r43992
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/avr/avr.c | 18 | ||||
-rw-r--r-- | gcc/config/avr/avr.md | 11 |
3 files changed, 21 insertions, 14 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index db0125f..8be501f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +Fri Jul 13 23:04:00 2001 Denis Chertykov <denisc@overta.ru> + + * config/avr/avr.md (strlenhi): PARALLEL keyword removed. + * config/avr/avr.c (legitimate_address_p): Return value changed + from letter to register classes. For better debugging. + 2001-07-13 Kazu Hirata <kazu@hxi.com> * jump.c (reversed_comparison_code_parts): Fix comment typos. diff --git a/gcc/config/avr/avr.c b/gcc/config/avr/avr.c index 303be94..605360a 100644 --- a/gcc/config/avr/avr.c +++ b/gcc/config/avr/avr.c @@ -816,12 +816,14 @@ avr_output_function_epilogue (file, size) machine for a memory operand of mode MODE. */ int +int legitimate_address_p (mode, x, strict) enum machine_mode mode; rtx x; int strict; { - int r = 0; + enum reg_class r = NO_REGS; + if (TARGET_ALL_DEBUG) { fprintf (stderr, "mode: (%s) %s %s %s %s:", @@ -843,9 +845,9 @@ legitimate_address_p (mode, x, strict) } if (REG_P (x) && (strict ? REG_OK_FOR_BASE_STRICT_P (x) : REG_OK_FOR_BASE_NOSTRICT_P (x))) - r = 'R'; + r = POINTER_REGS; else if (CONSTANT_ADDRESS_P (x)) - r = 'S'; + r = ALL_REGS; else if (GET_CODE (x) == PLUS && REG_P (XEXP (x, 0)) && GET_CODE (XEXP (x, 1)) == CONST_INT @@ -857,26 +859,26 @@ legitimate_address_p (mode, x, strict) if (! strict || REGNO (XEXP (x,0)) == REG_Y || REGNO (XEXP (x,0)) == REG_Z) - r = 'Q'; + r = BASE_POINTER_REGS; if (XEXP (x,0) == frame_pointer_rtx || XEXP (x,0) == arg_pointer_rtx) - r = 'Q'; + r = BASE_POINTER_REGS; } else if (frame_pointer_needed && XEXP (x,0) == frame_pointer_rtx) - r = 'U'; + r = POINTER_Y_REGS; } else if ((GET_CODE (x) == PRE_DEC || GET_CODE (x) == POST_INC) && REG_P (XEXP (x, 0)) && (strict ? REG_OK_FOR_BASE_STRICT_P (XEXP (x, 0)) : REG_OK_FOR_BASE_NOSTRICT_P (XEXP (x, 0)))) { - r = 'T'; + r = POINTER_REGS; } if (TARGET_ALL_DEBUG) { fprintf (stderr, " ret = %c\n", r); } - return r; + return r == NO_REGS ? 0 : (int)r; } /* Attempts to replace X with a valid diff --git a/gcc/config/avr/avr.md b/gcc/config/avr/avr.md index cd72f10..a62f679 100644 --- a/gcc/config/avr/avr.md +++ b/gcc/config/avr/avr.md @@ -224,7 +224,7 @@ { /* One of the ops has to be in a register */ if (!register_operand(operand0, HImode) - && !(register_operand(operand1, HImode) || const0_rtx == operands[1])) + && !(register_operand(operand1, HImode) || const0_rtx == operands[1])) { operands[1] = copy_to_mode_reg(HImode, operand1); } @@ -475,11 +475,10 @@ (set_attr "cc" "clobber,clobber")]) (define_expand "strlenhi" - [(parallel - [(set (match_dup 4) - (unspec:HI [(match_operand:BLK 1 "memory_operand" "") - (match_operand:QI 2 "const_int_operand" "") - (match_operand:HI 3 "immediate_operand" "")] 0))]) + [(set (match_dup 4) + (unspec:HI [(match_operand:BLK 1 "memory_operand" "") + (match_operand:QI 2 "const_int_operand" "") + (match_operand:HI 3 "immediate_operand" "")] 0)) (set (match_dup 4) (plus:HI (match_dup 4) (const_int -1))) (set (match_operand:HI 0 "register_operand" "") |