aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1995-07-14 08:05:18 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1995-07-14 08:05:18 -0400
commitf719a85deb51efd40101c6fcdc46c3bf7b73f0b5 (patch)
tree0a989b8a38adc5b3945fce260d7b4d488d5d3ca1
parentca00d1e070c7b360dbe30356cd3f793e95351716 (diff)
downloadgcc-f719a85deb51efd40101c6fcdc46c3bf7b73f0b5.zip
gcc-f719a85deb51efd40101c6fcdc46c3bf7b73f0b5.tar.gz
gcc-f719a85deb51efd40101c6fcdc46c3bf7b73f0b5.tar.bz2
Modify all patterns which handle stores to memory to also check current_function_varargs and current_function_stdarg.
Modify all patterns which handle stores to memory to also check current_function_varargs and current_function_stdarg. q From-SVN: r10125
-rw-r--r--gcc/config/i960/i960.md41
1 files changed, 35 insertions, 6 deletions
diff --git a/gcc/config/i960/i960.md b/gcc/config/i960/i960.md
index 225d5324..a458aad 100644
--- a/gcc/config/i960/i960.md
+++ b/gcc/config/i960/i960.md
@@ -1,5 +1,5 @@
;;- Machine description for Intel 80960 chip for GNU C compiler
-;; Copyright (C) 1992 Free Software Foundation, Inc.
+;; Copyright (C) 1992, 1995 Free Software Foundation, Inc.
;; Contributed by Steven McGeady, Intel Corp.
;; Additional work by Glenn Colon-Bonet, Jonathan Shapiro, Andy Wilson
;; Converted to GCC 2.0 by Jim Wilson and Michael Tiemann, Cygnus Support.
@@ -554,16 +554,19 @@
;; the calling convention is defined so that the arg pointer when it is not
;; overwise being used is zero. Thus, we can handle store zero to memory
;; by storing an unused arg pointer. The arg pointer will be unused if
-;; current_function_args_size is zero. This value of this variable is not
-;; valid until after all rtl generation is complete, including function
-;; inlining (because a function that doesn't need an arg pointer may be
-;; inlined into a function that does need an arg pointer), so we must also
-;; check that rtx_equal_function_value_matters is zero.
+;; current_function_args_size is zero and this is not a stdarg/varargs
+;; function. This value of the former variable is not valid until after
+;; all rtl generation is complete, including function inlining (because a
+;; function that doesn't need an arg pointer may be inlined into a function
+;; that does need an arg pointer), so we must also check that
+;; rtx_equal_function_value_matters is zero.
(define_insn ""
[(set (match_operand:SI 0 "general_operand" "=d,d,d,m")
(match_operand:SI 1 "general_operand" "dI,i,m,dJ"))]
"(current_function_args_size == 0
+ && current_function_varargs == 0
+ && current_function_stdarg == 0
&& rtx_equal_function_value_matters == 0)
&& (register_operand (operands[0], SImode)
|| register_operand (operands[1], SImode)
@@ -598,6 +601,8 @@
[(set (match_operand:SI 0 "general_operand" "=d,d,d,m")
(match_operand:SI 1 "general_operand" "dI,i,m,d"))]
"(current_function_args_size != 0
+ || current_function_varargs != 0
+ || current_function_stdarg != 0
|| rtx_equal_function_value_matters != 0)
&& (register_operand (operands[0], SImode)
|| register_operand (operands[1], SImode))"
@@ -643,6 +648,8 @@
[(set (match_operand:HI 0 "general_operand" "=d,d,d,m")
(match_operand:HI 1 "general_operand" "dI,i,m,dJ"))]
"(current_function_args_size == 0
+ && current_function_varargs == 0
+ && current_function_stdarg == 0
&& rtx_equal_function_value_matters == 0)
&& (register_operand (operands[0], HImode)
|| register_operand (operands[1], HImode)
@@ -678,6 +685,8 @@
[(set (match_operand:HI 0 "general_operand" "=d,d,d,m")
(match_operand:HI 1 "general_operand" "dI,i,m,d"))]
"(current_function_args_size != 0
+ || current_function_varargs != 0
+ || current_function_stdarg != 0
|| rtx_equal_function_value_matters != 0)
&& (register_operand (operands[0], HImode)
|| register_operand (operands[1], HImode))"
@@ -720,6 +729,8 @@
[(set (match_operand:QI 0 "general_operand" "=d,d,d,m")
(match_operand:QI 1 "general_operand" "dI,i,m,dJ"))]
"(current_function_args_size == 0
+ && current_function_varargs == 0
+ && current_function_stdarg == 0
&& rtx_equal_function_value_matters == 0)
&& (register_operand (operands[0], QImode)
|| register_operand (operands[1], QImode)
@@ -755,6 +766,8 @@
[(set (match_operand:QI 0 "general_operand" "=d,d,d,m")
(match_operand:QI 1 "general_operand" "dI,i,m,d"))]
"(current_function_args_size != 0
+ || current_function_varargs != 0
+ || current_function_stdarg != 0
|| rtx_equal_function_value_matters != 0)
&& (register_operand (operands[0], QImode)
|| register_operand (operands[1], QImode))"
@@ -797,6 +810,8 @@
[(set (match_operand:DI 0 "general_operand" "=d,d,d,m,o")
(match_operand:DI 1 "general_operand" "dI,i,m,d,J"))]
"(current_function_args_size == 0
+ && current_function_varargs == 0
+ && current_function_stdarg == 0
&& rtx_equal_function_value_matters == 0)
&& (register_operand (operands[0], DImode)
|| register_operand (operands[1], DImode)
@@ -825,6 +840,8 @@
[(set (match_operand:DI 0 "general_operand" "=d,d,d,m")
(match_operand:DI 1 "general_operand" "dI,i,m,d"))]
"(current_function_args_size != 0
+ || current_function_varargs != 0
+ || current_function_stdarg != 0
|| rtx_equal_function_value_matters != 0)
&& (register_operand (operands[0], DImode)
|| register_operand (operands[1], DImode))"
@@ -859,6 +876,8 @@
[(set (match_operand:TI 0 "general_operand" "=d,d,d,m,o")
(match_operand:TI 1 "general_operand" "dI,i,m,d,J"))]
"(current_function_args_size == 0
+ && current_function_varargs == 0
+ && current_function_stdarg == 0
&& rtx_equal_function_value_matters == 0)
&& (register_operand (operands[0], TImode)
|| register_operand (operands[1], TImode)
@@ -889,6 +908,8 @@
[(set (match_operand:TI 0 "general_operand" "=d,d,d,m")
(match_operand:TI 1 "general_operand" "dI,i,m,d"))]
"(current_function_args_size != 0
+ || current_function_varargs != 0
+ || current_function_stdarg != 0
|| rtx_equal_function_value_matters != 0)
&& (register_operand (operands[0], TImode)
|| register_operand (operands[1], TImode))"
@@ -977,6 +998,8 @@
[(set (match_operand:DF 0 "general_operand" "=r,*f,d,d,m,o")
(match_operand:DF 1 "fpmove_src_operand" "r,GH,F,m,d,G"))]
"(current_function_args_size == 0
+ && current_function_varargs == 0
+ && current_function_stdarg == 0
&& rtx_equal_function_value_matters == 0)
&& (register_operand (operands[0], DFmode)
|| register_operand (operands[1], DFmode)
@@ -1009,6 +1032,8 @@
[(set (match_operand:DF 0 "general_operand" "=r,*f,d,d,m")
(match_operand:DF 1 "fpmove_src_operand" "r,GH,F,m,d"))]
"(current_function_args_size != 0
+ || current_function_varargs != 0
+ || current_function_stdarg != 0
|| rtx_equal_function_value_matters != 0)
&& (register_operand (operands[0], DFmode)
|| register_operand (operands[1], DFmode))"
@@ -1047,6 +1072,8 @@
[(set (match_operand:SF 0 "general_operand" "=r,*f,d,d,m")
(match_operand:SF 1 "fpmove_src_operand" "r,GH,F,m,dG"))]
"(current_function_args_size == 0
+ && current_function_varargs == 0
+ && current_function_stdarg == 0
&& rtx_equal_function_value_matters == 0)
&& (register_operand (operands[0], SFmode)
|| register_operand (operands[1], SFmode)
@@ -1078,6 +1105,8 @@
[(set (match_operand:SF 0 "general_operand" "=r,*f,d,d,m")
(match_operand:SF 1 "fpmove_src_operand" "r,GH,F,m,d"))]
"(current_function_args_size != 0
+ || current_function_varargs != 0
+ || current_function_stdarg != 0
|| rtx_equal_function_value_matters != 0)
&& (register_operand (operands[0], SFmode)
|| register_operand (operands[1], SFmode))"