diff options
| -rw-r--r-- | gcc/ChangeLog | 5 | ||||
| -rw-r--r-- | gcc/config/h8300/h8300.c | 11 |
2 files changed, 10 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 319bbd0..6b5136a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2002-02-07 Kazu Hirata <kazu@hxi.com> + + * config/h8300/h8300.c (two_insn_adds_subs_operand): Revise a + comment. Accept HImode only if TARGET_H8300. + 2002-02-07 Eric Christopher <echristo@redhat.com> * config/mips/crtn.asm: Cleanup #ifdefs. diff --git a/gcc/config/h8300/h8300.c b/gcc/config/h8300/h8300.c index ea673fc..f861290 100644 --- a/gcc/config/h8300/h8300.c +++ b/gcc/config/h8300/h8300.c @@ -632,12 +632,11 @@ two_insn_adds_subs_operand (op, mode) } else { - /* A constant addition/subtraction takes 2 states in - QImode. It takes 6 states in HImode, requiring the - constant to be loaded to a register first, and a lot more - in SImode. Thus the only case we can win is when either - HImode or SImode is used. */ - if (mode != QImode + /* We do not profit directly by splitting addition or + subtraction of 3 and 4. However, since these are + implemented as a sequence of adds or subs, they do not + clobber (cc0) unlike a sequence of add.b and add.x. */ + if (mode == HImode && (value == 2 + 1 || value == 2 + 2)) return 1; |
