diff options
author | Kazu Hirata <kazu@cs.umass.edu> | 2003-12-04 04:31:16 +0000 |
---|---|---|
committer | Kazu Hirata <kazu@gcc.gnu.org> | 2003-12-04 04:31:16 +0000 |
commit | 32da7865f907faa9bd4e49ce797e7f9c438a86a3 (patch) | |
tree | 2529c92e1a55f6de89e2dba4a4a38ac737d4f561 | |
parent | ce6e2d9028abad0651b422106ba95e656637f8a9 (diff) | |
download | gcc-32da7865f907faa9bd4e49ce797e7f9c438a86a3.zip gcc-32da7865f907faa9bd4e49ce797e7f9c438a86a3.tar.gz gcc-32da7865f907faa9bd4e49ce797e7f9c438a86a3.tar.bz2 |
h8300.c (push): Call gen_push_h8300hs_advanced instead of gen_push_h8300hs.
* config/h8300/h8300.c (push): Call gen_push_h8300hs_advanced
instead of gen_push_h8300hs.
(pop): Call gen_pop_h8300hs_advanced instead of
gen_pop_h8300hs.
* config/h8300/h8300.h (TRAMPOLINE_SIZE): Use Pmode.
* config/h8300/h8300.md (*tablejump_h8300hs_advanced):
Tighten the predicate.
(*tablejump_h8300hs_normal): Tighten the predicate.
(push_h8300hs): Change to
push_h8300hs_advanced.
(pop_h8300hs): Change to pop_h8300hs_advanced.
From-SVN: r74267
-rw-r--r-- | gcc/ChangeLog | 14 | ||||
-rw-r--r-- | gcc/config/h8300/h8300.c | 4 | ||||
-rw-r--r-- | gcc/config/h8300/h8300.h | 2 | ||||
-rw-r--r-- | gcc/config/h8300/h8300.md | 16 |
4 files changed, 25 insertions, 11 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 738464f..e6d2e6d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,17 @@ +2003-12-03 Kazu Hirata <kazu@cs.umass.edu> + + * config/h8300/h8300.c (push): Call gen_push_h8300hs_advanced + instead of gen_push_h8300hs. + (pop): Call gen_pop_h8300hs_advanced instead of + gen_pop_h8300hs. + * config/h8300/h8300.h (TRAMPOLINE_SIZE): Use Pmode. + * config/h8300/h8300.md (*tablejump_h8300hs_advanced): + Tighten the predicate. + (*tablejump_h8300hs_normal): Tighten the predicate. + (push_h8300hs): Change to + push_h8300hs_advanced. + (pop_h8300hs): Change to pop_h8300hs_advanced. + 2003-12-03 Eric Christopher <echristo@redhat.com> * rtl.c: Fix typo. diff --git a/gcc/config/h8300/h8300.c b/gcc/config/h8300/h8300.c index f9754e4..ed3cc08 100644 --- a/gcc/config/h8300/h8300.c +++ b/gcc/config/h8300/h8300.c @@ -435,7 +435,7 @@ push (int rn) if (TARGET_H8300) x = gen_push_h8300 (reg); else if (!TARGET_NORMAL_MODE) - x = gen_push_h8300hs (reg); + x = gen_push_h8300hs_advanced (reg); else x = gen_push_h8300hs_normal (reg); x = emit_insn (x); @@ -453,7 +453,7 @@ pop (int rn) if (TARGET_H8300) x = gen_pop_h8300 (reg); else if (!TARGET_NORMAL_MODE) - x = gen_pop_h8300hs (reg); + x = gen_pop_h8300hs_advanced (reg); else x = gen_pop_h8300hs_normal (reg); x = emit_insn (x); diff --git a/gcc/config/h8300/h8300.h b/gcc/config/h8300/h8300.h index c377b57..b60fc52 100644 --- a/gcc/config/h8300/h8300.h +++ b/gcc/config/h8300/h8300.h @@ -735,7 +735,7 @@ struct cum_arg /* Length in units of the trampoline for entering a nested function. */ -#define TRAMPOLINE_SIZE ((TARGET_H8300 || TARGET_NORMAL_MODE) ? 8 : 12) +#define TRAMPOLINE_SIZE ((Pmode == HImode) ? 8 : 12) /* Emit RTL insns to build a trampoline. FNADDR is an RTX for the address of the function's pure code. diff --git a/gcc/config/h8300/h8300.md b/gcc/config/h8300/h8300.md index 5a9d6ad..9743308 100644 --- a/gcc/config/h8300/h8300.md +++ b/gcc/config/h8300/h8300.md @@ -1763,7 +1763,7 @@ (define_insn "*tablejump_h8300hs_advanced" [(set (pc) (match_operand:SI 0 "register_operand" "r")) (use (label_ref (match_operand 1 "" "")))] - "TARGET_H8300H || TARGET_H8300S" + "(TARGET_H8300H || TARGET_H8300S) && !TARGET_NORMAL_MODE" "jmp @%0" [(set_attr "cc" "none") (set_attr "length" "2")]) @@ -1792,7 +1792,7 @@ (define_insn "*indirect_jump_h8300hs_advanced" [(set (pc) (match_operand:SI 0 "jump_address_operand" "Vr"))] - "TARGET_H8300H || TARGET_H8300S" + "(TARGET_H8300H || TARGET_H8300S) && !TARGET_NORMAL_MODE" "jmp @%0" [(set_attr "cc" "none") (set_attr "length" "2")]) @@ -1867,16 +1867,16 @@ "TARGET_H8300" "") -(define_expand "push_h8300hs" +(define_expand "push_h8300hs_advanced" [(set (mem:SI (pre_dec:SI (reg:SI SP_REG))) (match_operand:SI 0 "register_operand" ""))] - "TARGET_H8300H && TARGET_H8300S" + "TARGET_H8300H && TARGET_H8300S && !TARGET_NORMAL_MODE" "") (define_expand "push_h8300hs_normal" [(set (mem:SI (pre_dec:HI (reg:HI SP_REG))) (match_operand:SI 0 "register_operand" ""))] - "TARGET_NORMAL_MODE" + "TARGET_H8300H && TARGET_H8300S && TARGET_NORMAL_MODE" "") (define_expand "pop_h8300" @@ -1885,16 +1885,16 @@ "TARGET_H8300" "") -(define_expand "pop_h8300hs" +(define_expand "pop_h8300hs_advanced" [(set (match_operand:SI 0 "register_operand" "") (mem:SI (post_inc:SI (reg:SI SP_REG))))] - "TARGET_H8300H && TARGET_H8300S" + "TARGET_H8300H && TARGET_H8300S && !TARGET_NORMAL_MODE" "") (define_expand "pop_h8300hs_normal" [(set (match_operand:SI 0 "register_operand" "") (mem:SI (post_inc:HI (reg:HI SP_REG))))] - "TARGET_NORMAL_MODE" + "TARGET_H8300H && TARGET_H8300S && TARGET_NORMAL_MODE" "") (define_insn "stm_h8300s_2_advanced" |