aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDenis Chertykov <denisc@overta.ru>2000-11-24 20:02:40 +0000
committerDenis Chertykov <denisc@gcc.gnu.org>2000-11-24 23:02:40 +0300
commit33f77355884225dd3e259b2610f555355482e295 (patch)
tree5c3d79ea74733a374e668a341abde37da6454e5c /gcc
parent692dc9c6351e59286337a6b0db77ecba58ff5268 (diff)
downloadgcc-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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/avr/avr.c29
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;
}
}
}