aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJim Wilson <wilson@cygnus.com>2000-08-03 00:31:39 +0000
committerJim Wilson <wilson@gcc.gnu.org>2000-08-02 17:31:39 -0700
commite314e3318ad35415f1ea44093c0b0fba263da358 (patch)
tree7efcac071a1e56faf0aa7eec843f12ec37038a20 /gcc
parent3db35af4a5e89aa783388b58240b7c5b2561a187 (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--gcc/config/ia64/ia64-protos.h3
-rw-r--r--gcc/config/ia64/ia64.md20
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