diff options
author | Jim Wilson <wilson@cygnus.com> | 2000-08-03 00:31:39 +0000 |
---|---|---|
committer | Jim Wilson <wilson@gcc.gnu.org> | 2000-08-02 17:31:39 -0700 |
commit | e314e3318ad35415f1ea44093c0b0fba263da358 (patch) | |
tree | 7efcac071a1e56faf0aa7eec843f12ec37038a20 /gcc | |
parent | 3db35af4a5e89aa783388b58240b7c5b2561a187 (diff) | |
download | gcc-e314e3318ad35415f1ea44093c0b0fba263da358.zip gcc-e314e3318ad35415f1ea44093c0b0fba263da358.tar.gz gcc-e314e3318ad35415f1ea44093c0b0fba263da358.tar.bz2 |
Workaround for -fssa testsuite failures.
* config/ia64/ia64-protos.h (flag_ssa): Declare.
* config/ia64/ia64.md (movti_internal, movti_internal+1): New.
From-SVN: r35439
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/ia64/ia64-protos.h | 3 | ||||
-rw-r--r-- | gcc/config/ia64/ia64.md | 20 |
3 files changed, 28 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9d27b95..58b1aa4 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2000-08-02 Jim Wilson <wilson@cygnus.com> + + * config/ia64/ia64-protos.h (flag_ssa): Declare. + * config/ia64/ia64.md (movti_internal, movti_internal+1): New. + 2000-08-02 Mark Mitchell <mark@codesourcery.com> * dce.c: Remove all uses of assert. diff --git a/gcc/config/ia64/ia64-protos.h b/gcc/config/ia64/ia64-protos.h index 12ea516..eb65ca8 100644 --- a/gcc/config/ia64/ia64-protos.h +++ b/gcc/config/ia64/ia64-protos.h @@ -118,3 +118,6 @@ extern void ia64_init_builtins PARAMS((void)); extern void ia64_override_options PARAMS((void)); extern unsigned int ia64_compute_frame_size PARAMS((int)); extern void save_restore_insns PARAMS((int)); + +/* ??? Flag defined in toplev.c, for ia64.md -fssa hack. */ +extern int flag_ssa; diff --git a/gcc/config/ia64/ia64.md b/gcc/config/ia64/ia64.md index f430120..4cc442b 100644 --- a/gcc/config/ia64/ia64.md +++ b/gcc/config/ia64/ia64.md @@ -551,6 +551,26 @@ "addl %0 = @ltoff(%1), gp" [(set_attr "type" "A")]) +;; ??? These patterns exist to make SSA happy. We can get TImode values +;; because of structure moves generated for parameter and return value +;; loads and stores. + +(define_insn "*movti_internal" + [(set (match_operand:TI 0 "register_operand" "=r") + (match_operand:TI 1 "register_operand" "r"))] + "flag_ssa" + "#" + [(set_attr "type" "unknown") + (set_attr "predicable" "no")]) + +(define_split + [(set (match_operand:TI 0 "register_operand" "") + (match_operand:TI 1 "register_operand" ""))] + "flag_ssa && reload_completed" + [(set (subreg:DI (match_dup 0) 0) (subreg:DI (match_dup 1) 0)) + (set (subreg:DI (match_dup 0) 1) (subreg:DI (match_dup 1) 1))] + "") + ;; Floating Point Moves ;; ;; Note - Patterns for SF mode moves are compulsory, but |