diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 13 | ||||
-rw-r--r-- | gcc/config/sh/sh.md | 21 |
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])++;") |