summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog13
-rw-r--r--gcc/config/sh/sh.md21
2 files changed, 24 insertions, 10 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index bea9ac4eb83..8fb3efe1151 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,18 @@
2001-07-18 Andrew Haley <aph@cambridge.redhat.com>
+ * config/sh/sh.md (ashlsi3_std splitter): Split only after reload.
+ (ashlsi3_n splitter): Likewise.
+ (lshrsi3_n splitter): Likewise.
+
+ (GOTaddr2picreg): Make const SImode.
+ (sym_label2reg): Likewise.
+ (symGOT2reg): Likewise.
+ (symGOTOFF2reg) Likewise.
+
+ (casesi_worker_0): Make unspec SImode.
+
+2001-07-18 Andrew Haley <aph@cambridge.redhat.com>
+
* config/sh/sh.c (barrier_align): Check that an operand really is
an insn before extracting its INSN_CODE.
diff --git a/gcc/config/sh/sh.md b/gcc/config/sh/sh.md
index c625b702a05..5eba38e065f 100644
--- a/gcc/config/sh/sh.md
+++ b/gcc/config/sh/sh.md
@@ -1654,6 +1654,7 @@
shll%O2 %0
#"
"TARGET_SH3
+ && reload_completed
&& GET_CODE (operands[2]) == CONST_INT
&& ! CONST_OK_FOR_K (INTVAL (operands[2]))"
[(set (match_dup 3) (match_dup 2))
@@ -1696,7 +1697,7 @@
(ashift:SI (match_operand:SI 1 "arith_reg_operand" "")
(match_operand:SI 2 "const_int_operand" "n")))
(clobber (reg:SI T_REG))]
- ""
+ "reload_completed"
[(use (reg:SI R0_REG))]
"
{
@@ -1744,7 +1745,7 @@
(ashift:HI (match_operand:HI 1 "arith_reg_operand" "")
(match_operand:HI 2 "const_int_operand" "n")))
(clobber (reg:SI T_REG))]
- ""
+ "reload_completed"
[(use (reg:SI R0_REG))]
"
{
@@ -1904,7 +1905,7 @@
(lshiftrt:SI (match_operand:SI 1 "arith_reg_operand" "")
(match_operand:SI 2 "const_int_operand" "n")))
(clobber (reg:SI T_REG))]
- ""
+ "reload_completed"
[(use (reg:SI R0_REG))]
"
{
@@ -3747,7 +3748,7 @@
[(set (reg:SI R0_REG)
(unspec [(const (unspec [(match_dup 1)] UNSPEC_PIC))]
UNSPEC_MOVA))
- (set (match_dup 0) (const (unspec [(match_dup 1)] UNSPEC_PIC)))
+ (set (match_dup 0) (const:SI (unspec:SI [(match_dup 1)] UNSPEC_PIC)))
(set (match_dup 0) (plus:SI (match_dup 0) (reg:SI R0_REG)))]
"" "
{
@@ -3778,7 +3779,7 @@
(define_expand "sym_label2reg"
[(set (match_operand:SI 0 "" "")
(const (minus:SI
- (const (unspec [(match_operand:SI 1 "" "")] UNSPEC_PIC))
+ (const:SI (unspec:SI [(match_operand:SI 1 "" "")] UNSPEC_PIC))
(const (plus:SI
(match_operand:SI 2 "" "")
(const_int 2))))))]
@@ -3786,7 +3787,7 @@
(define_expand "symGOT2reg"
[(set (match_operand:SI 0 "" "")
- (const (unspec [(match_operand:SI 1 "" "")] UNSPEC_GOT)))
+ (const:SI (unspec:SI [(match_operand:SI 1 "" "")] UNSPEC_GOT)))
(set (match_dup 0) (plus:SI (match_dup 0) (match_dup 2)))
(set (match_dup 0) (mem:SI (match_dup 0)))]
""
@@ -3797,7 +3798,7 @@
(define_expand "symGOTOFF2reg"
[(set (match_operand:SI 0 "" "")
- (const (unspec [(match_operand:SI 1 "" "")] UNSPEC_GOTOFF)))
+ (const:SI (unspec:SI [(match_operand:SI 1 "" "")] UNSPEC_GOTOFF)))
(set (match_dup 0) (plus:SI (match_dup 0) (match_dup 2)))]
""
"
@@ -3886,7 +3887,7 @@
(define_insn "casesi_worker_0"
[(set (match_operand:SI 0 "register_operand" "=r,r")
- (unspec [(match_operand 1 "register_operand" "0,r")
+ (unspec:SI [(match_operand 1 "register_operand" "0,r")
(label_ref (match_operand 2 "" ""))] UNSPEC_CASESI))
(clobber (match_scratch:SI 3 "=X,1"))
(clobber (match_scratch:SI 4 "=&z,z"))]
@@ -3910,14 +3911,14 @@
(define_split
[(set (match_operand:SI 0 "register_operand" "")
- (unspec [(match_operand 1 "register_operand" "")
+ (unspec:SI [(match_operand 1 "register_operand" "")
(label_ref (match_operand 2 "" ""))] UNSPEC_CASESI))
(clobber (match_scratch:SI 3 ""))
(clobber (match_scratch:SI 4 ""))]
"TARGET_SH2 && reload_completed"
[(set (reg:SI R0_REG) (unspec [(label_ref (match_dup 2))] UNSPEC_MOVA))
(parallel [(set (match_dup 0)
- (unspec [(reg:SI R0_REG) (match_dup 1)
+ (unspec:SI [(reg:SI R0_REG) (match_dup 1)
(label_ref (match_dup 2))] UNSPEC_CASESI))
(clobber (match_dup 3))])]
"LABEL_NUSES (operands[2])++;")