summaryrefslogtreecommitdiff
path: root/gcc/config/ia64/ia64.md
diff options
context:
space:
mode:
authorwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>2000-08-03 00:31:39 +0000
committerwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>2000-08-03 00:31:39 +0000
commite84fc051bc672202bbdad768634295a1b9f3a9a4 (patch)
tree7efcac071a1e56faf0aa7eec843f12ec37038a20 /gcc/config/ia64/ia64.md
parent124d58a1566656489e1a34297499ddec51df6eb3 (diff)
downloadgcc-e84fc051bc672202bbdad768634295a1b9f3a9a4.tar.gz
Workaround for -fssa testsuite failures.
* config/ia64/ia64-protos.h (flag_ssa): Declare. * config/ia64/ia64.md (movti_internal, movti_internal+1): New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@35439 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/ia64/ia64.md')
-rw-r--r--gcc/config/ia64/ia64.md20
1 files changed, 20 insertions, 0 deletions
diff --git a/gcc/config/ia64/ia64.md b/gcc/config/ia64/ia64.md
index f43012056be..4cc442bfa0d 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