aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKazu Hirata <kazu@cs.umass.edu>2003-12-04 04:31:16 +0000
committerKazu Hirata <kazu@gcc.gnu.org>2003-12-04 04:31:16 +0000
commit32da7865f907faa9bd4e49ce797e7f9c438a86a3 (patch)
tree2529c92e1a55f6de89e2dba4a4a38ac737d4f561
parentce6e2d9028abad0651b422106ba95e656637f8a9 (diff)
downloadgcc-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/ChangeLog14
-rw-r--r--gcc/config/h8300/h8300.c4
-rw-r--r--gcc/config/h8300/h8300.h2
-rw-r--r--gcc/config/h8300/h8300.md16
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"