diff options
author | Denis Chertykov <denisc@overta.ru> | 2000-11-24 20:02:40 +0000 |
---|---|---|
committer | Denis Chertykov <denisc@gcc.gnu.org> | 2000-11-24 23:02:40 +0300 |
commit | 33f77355884225dd3e259b2610f555355482e295 (patch) | |
tree | 5c3d79ea74733a374e668a341abde37da6454e5c | |
parent | 692dc9c6351e59286337a6b0db77ecba58ff5268 (diff) | |
download | gcc-33f77355884225dd3e259b2610f555355482e295.zip gcc-33f77355884225dd3e259b2610f555355482e295.tar.gz gcc-33f77355884225dd3e259b2610f555355482e295.tar.bz2 |
avr.c (out_tsthi,out_tstsi): Test simplification bug fixed.
* config/avr/avr.c (out_tsthi,out_tstsi): Test simplification bug
fixed.
(machine_dependent_reorg): Wrong optimization based on
NOTICE_UPDATE_CC removed.
From-SVN: r37715
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/avr/avr.c | 29 |
2 files changed, 18 insertions, 18 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9dcaaf5..e23a6aa 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +Fri Nov 24 22:37:41 2000 Denis Chertykov <denisc@overta.ru> + + * config/avr/avr.c (out_tsthi,out_tstsi): Test simplification bug + fixed. + (machine_dependent_reorg): Wrong optimization based on + NOTICE_UPDATE_CC removed. + Fri Nov 24 19:48:09 2000 J"orn Rennecke <amylaar@redhat.com> * jump.c (delete_computation): Re-instate deletion of feeding insn. diff --git a/gcc/config/avr/avr.c b/gcc/config/avr/avr.c index 9427de7..b696e55 100644 --- a/gcc/config/avr/avr.c +++ b/gcc/config/avr/avr.c @@ -2650,7 +2650,7 @@ out_tsthi (insn, l) rtx insn; int *l; { - if (!compare_eq_p (insn)) + if (!compare_eq_p (insn) && !compare_diff_p (insn)) { if (l) *l = 1; return AS1 (tst,%B0); @@ -2679,7 +2679,7 @@ out_tstsi (insn, l) rtx insn; int *l; { - if (!compare_eq_p (insn)) + if (!compare_eq_p (insn) && !compare_diff_p(insn)) { if (l) *l = 1; return AS1 (tst,%D0); @@ -4932,20 +4932,17 @@ machine_dependent_reorg (first_insn) rtx first_insn; { rtx insn, pattern; - CC_STATUS_INIT; for (insn = first_insn; insn; insn = NEXT_INSN (insn)) { - if (! (insn == 0 || GET_CODE (insn) == INSN - || GET_CODE (insn) == CALL_INSN || GET_CODE (insn) == JUMP_INSN) + if (! (GET_CODE (insn) == INSN + || GET_CODE (insn) == CALL_INSN + || GET_CODE (insn) == JUMP_INSN) || !single_set (insn)) continue; pattern = PATTERN (insn); - cc_prev_status = cc_status; - NOTICE_UPDATE_CC (pattern, insn); - if (GET_CODE (pattern) == PARALLEL) pattern = XVECEXP (pattern, 0, 0); if (GET_CODE (pattern) == SET @@ -4997,16 +4994,12 @@ machine_dependent_reorg (first_insn) rtx src = SET_SRC (pat); rtx t = XEXP (src,0); - if (!(cc_prev_status.value1 != 0 && cc_status.value1 != 0 - && rtx_equal_p (cc_status.value1, cc_prev_status.value1))) - { - PUT_CODE (t, swap_condition (GET_CODE (t))); - SET_SRC (pattern) = gen_rtx (NEG, - GET_MODE (SET_SRC (pattern)), - SET_SRC (pattern)); - INSN_CODE (next) = -1; - INSN_CODE (insn) = -1; - } + PUT_CODE (t, swap_condition (GET_CODE (t))); + SET_SRC (pattern) = gen_rtx (NEG, + GET_MODE (SET_SRC (pattern)), + SET_SRC (pattern)); + INSN_CODE (next) = -1; + INSN_CODE (insn) = -1; } } } |