Commit f719a85d by Richard Kenner

Modify all patterns which handle stores to memory to also check…

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
parent ca00d1e0
;;- Machine description for Intel 80960 chip for GNU C compiler ;;- 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. ;; Contributed by Steven McGeady, Intel Corp.
;; Additional work by Glenn Colon-Bonet, Jonathan Shapiro, Andy Wilson ;; Additional work by Glenn Colon-Bonet, Jonathan Shapiro, Andy Wilson
;; Converted to GCC 2.0 by Jim Wilson and Michael Tiemann, Cygnus Support. ;; Converted to GCC 2.0 by Jim Wilson and Michael Tiemann, Cygnus Support.
...@@ -554,16 +554,19 @@ ...@@ -554,16 +554,19 @@
;; the calling convention is defined so that the arg pointer when it is not ;; 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 ;; 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 ;; 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 ;; current_function_args_size is zero and this is not a stdarg/varargs
;; valid until after all rtl generation is complete, including function ;; function. This value of the former variable is not valid until after
;; inlining (because a function that doesn't need an arg pointer may be ;; all rtl generation is complete, including function inlining (because a
;; inlined into a function that does need an arg pointer), so we must also ;; function that doesn't need an arg pointer may be inlined into a function
;; check that rtx_equal_function_value_matters is zero. ;; that does need an arg pointer), so we must also check that
;; rtx_equal_function_value_matters is zero.
(define_insn "" (define_insn ""
[(set (match_operand:SI 0 "general_operand" "=d,d,d,m") [(set (match_operand:SI 0 "general_operand" "=d,d,d,m")
(match_operand:SI 1 "general_operand" "dI,i,m,dJ"))] (match_operand:SI 1 "general_operand" "dI,i,m,dJ"))]
"(current_function_args_size == 0 "(current_function_args_size == 0
&& current_function_varargs == 0
&& current_function_stdarg == 0
&& rtx_equal_function_value_matters == 0) && rtx_equal_function_value_matters == 0)
&& (register_operand (operands[0], SImode) && (register_operand (operands[0], SImode)
|| register_operand (operands[1], SImode) || register_operand (operands[1], SImode)
...@@ -598,6 +601,8 @@ ...@@ -598,6 +601,8 @@
[(set (match_operand:SI 0 "general_operand" "=d,d,d,m") [(set (match_operand:SI 0 "general_operand" "=d,d,d,m")
(match_operand:SI 1 "general_operand" "dI,i,m,d"))] (match_operand:SI 1 "general_operand" "dI,i,m,d"))]
"(current_function_args_size != 0 "(current_function_args_size != 0
|| current_function_varargs != 0
|| current_function_stdarg != 0
|| rtx_equal_function_value_matters != 0) || rtx_equal_function_value_matters != 0)
&& (register_operand (operands[0], SImode) && (register_operand (operands[0], SImode)
|| register_operand (operands[1], SImode))" || register_operand (operands[1], SImode))"
...@@ -643,6 +648,8 @@ ...@@ -643,6 +648,8 @@
[(set (match_operand:HI 0 "general_operand" "=d,d,d,m") [(set (match_operand:HI 0 "general_operand" "=d,d,d,m")
(match_operand:HI 1 "general_operand" "dI,i,m,dJ"))] (match_operand:HI 1 "general_operand" "dI,i,m,dJ"))]
"(current_function_args_size == 0 "(current_function_args_size == 0
&& current_function_varargs == 0
&& current_function_stdarg == 0
&& rtx_equal_function_value_matters == 0) && rtx_equal_function_value_matters == 0)
&& (register_operand (operands[0], HImode) && (register_operand (operands[0], HImode)
|| register_operand (operands[1], HImode) || register_operand (operands[1], HImode)
...@@ -678,6 +685,8 @@ ...@@ -678,6 +685,8 @@
[(set (match_operand:HI 0 "general_operand" "=d,d,d,m") [(set (match_operand:HI 0 "general_operand" "=d,d,d,m")
(match_operand:HI 1 "general_operand" "dI,i,m,d"))] (match_operand:HI 1 "general_operand" "dI,i,m,d"))]
"(current_function_args_size != 0 "(current_function_args_size != 0
|| current_function_varargs != 0
|| current_function_stdarg != 0
|| rtx_equal_function_value_matters != 0) || rtx_equal_function_value_matters != 0)
&& (register_operand (operands[0], HImode) && (register_operand (operands[0], HImode)
|| register_operand (operands[1], HImode))" || register_operand (operands[1], HImode))"
...@@ -720,6 +729,8 @@ ...@@ -720,6 +729,8 @@
[(set (match_operand:QI 0 "general_operand" "=d,d,d,m") [(set (match_operand:QI 0 "general_operand" "=d,d,d,m")
(match_operand:QI 1 "general_operand" "dI,i,m,dJ"))] (match_operand:QI 1 "general_operand" "dI,i,m,dJ"))]
"(current_function_args_size == 0 "(current_function_args_size == 0
&& current_function_varargs == 0
&& current_function_stdarg == 0
&& rtx_equal_function_value_matters == 0) && rtx_equal_function_value_matters == 0)
&& (register_operand (operands[0], QImode) && (register_operand (operands[0], QImode)
|| register_operand (operands[1], QImode) || register_operand (operands[1], QImode)
...@@ -755,6 +766,8 @@ ...@@ -755,6 +766,8 @@
[(set (match_operand:QI 0 "general_operand" "=d,d,d,m") [(set (match_operand:QI 0 "general_operand" "=d,d,d,m")
(match_operand:QI 1 "general_operand" "dI,i,m,d"))] (match_operand:QI 1 "general_operand" "dI,i,m,d"))]
"(current_function_args_size != 0 "(current_function_args_size != 0
|| current_function_varargs != 0
|| current_function_stdarg != 0
|| rtx_equal_function_value_matters != 0) || rtx_equal_function_value_matters != 0)
&& (register_operand (operands[0], QImode) && (register_operand (operands[0], QImode)
|| register_operand (operands[1], QImode))" || register_operand (operands[1], QImode))"
...@@ -797,6 +810,8 @@ ...@@ -797,6 +810,8 @@
[(set (match_operand:DI 0 "general_operand" "=d,d,d,m,o") [(set (match_operand:DI 0 "general_operand" "=d,d,d,m,o")
(match_operand:DI 1 "general_operand" "dI,i,m,d,J"))] (match_operand:DI 1 "general_operand" "dI,i,m,d,J"))]
"(current_function_args_size == 0 "(current_function_args_size == 0
&& current_function_varargs == 0
&& current_function_stdarg == 0
&& rtx_equal_function_value_matters == 0) && rtx_equal_function_value_matters == 0)
&& (register_operand (operands[0], DImode) && (register_operand (operands[0], DImode)
|| register_operand (operands[1], DImode) || register_operand (operands[1], DImode)
...@@ -825,6 +840,8 @@ ...@@ -825,6 +840,8 @@
[(set (match_operand:DI 0 "general_operand" "=d,d,d,m") [(set (match_operand:DI 0 "general_operand" "=d,d,d,m")
(match_operand:DI 1 "general_operand" "dI,i,m,d"))] (match_operand:DI 1 "general_operand" "dI,i,m,d"))]
"(current_function_args_size != 0 "(current_function_args_size != 0
|| current_function_varargs != 0
|| current_function_stdarg != 0
|| rtx_equal_function_value_matters != 0) || rtx_equal_function_value_matters != 0)
&& (register_operand (operands[0], DImode) && (register_operand (operands[0], DImode)
|| register_operand (operands[1], DImode))" || register_operand (operands[1], DImode))"
...@@ -859,6 +876,8 @@ ...@@ -859,6 +876,8 @@
[(set (match_operand:TI 0 "general_operand" "=d,d,d,m,o") [(set (match_operand:TI 0 "general_operand" "=d,d,d,m,o")
(match_operand:TI 1 "general_operand" "dI,i,m,d,J"))] (match_operand:TI 1 "general_operand" "dI,i,m,d,J"))]
"(current_function_args_size == 0 "(current_function_args_size == 0
&& current_function_varargs == 0
&& current_function_stdarg == 0
&& rtx_equal_function_value_matters == 0) && rtx_equal_function_value_matters == 0)
&& (register_operand (operands[0], TImode) && (register_operand (operands[0], TImode)
|| register_operand (operands[1], TImode) || register_operand (operands[1], TImode)
...@@ -889,6 +908,8 @@ ...@@ -889,6 +908,8 @@
[(set (match_operand:TI 0 "general_operand" "=d,d,d,m") [(set (match_operand:TI 0 "general_operand" "=d,d,d,m")
(match_operand:TI 1 "general_operand" "dI,i,m,d"))] (match_operand:TI 1 "general_operand" "dI,i,m,d"))]
"(current_function_args_size != 0 "(current_function_args_size != 0
|| current_function_varargs != 0
|| current_function_stdarg != 0
|| rtx_equal_function_value_matters != 0) || rtx_equal_function_value_matters != 0)
&& (register_operand (operands[0], TImode) && (register_operand (operands[0], TImode)
|| register_operand (operands[1], TImode))" || register_operand (operands[1], TImode))"
...@@ -977,6 +998,8 @@ ...@@ -977,6 +998,8 @@
[(set (match_operand:DF 0 "general_operand" "=r,*f,d,d,m,o") [(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"))] (match_operand:DF 1 "fpmove_src_operand" "r,GH,F,m,d,G"))]
"(current_function_args_size == 0 "(current_function_args_size == 0
&& current_function_varargs == 0
&& current_function_stdarg == 0
&& rtx_equal_function_value_matters == 0) && rtx_equal_function_value_matters == 0)
&& (register_operand (operands[0], DFmode) && (register_operand (operands[0], DFmode)
|| register_operand (operands[1], DFmode) || register_operand (operands[1], DFmode)
...@@ -1009,6 +1032,8 @@ ...@@ -1009,6 +1032,8 @@
[(set (match_operand:DF 0 "general_operand" "=r,*f,d,d,m") [(set (match_operand:DF 0 "general_operand" "=r,*f,d,d,m")
(match_operand:DF 1 "fpmove_src_operand" "r,GH,F,m,d"))] (match_operand:DF 1 "fpmove_src_operand" "r,GH,F,m,d"))]
"(current_function_args_size != 0 "(current_function_args_size != 0
|| current_function_varargs != 0
|| current_function_stdarg != 0
|| rtx_equal_function_value_matters != 0) || rtx_equal_function_value_matters != 0)
&& (register_operand (operands[0], DFmode) && (register_operand (operands[0], DFmode)
|| register_operand (operands[1], DFmode))" || register_operand (operands[1], DFmode))"
...@@ -1047,6 +1072,8 @@ ...@@ -1047,6 +1072,8 @@
[(set (match_operand:SF 0 "general_operand" "=r,*f,d,d,m") [(set (match_operand:SF 0 "general_operand" "=r,*f,d,d,m")
(match_operand:SF 1 "fpmove_src_operand" "r,GH,F,m,dG"))] (match_operand:SF 1 "fpmove_src_operand" "r,GH,F,m,dG"))]
"(current_function_args_size == 0 "(current_function_args_size == 0
&& current_function_varargs == 0
&& current_function_stdarg == 0
&& rtx_equal_function_value_matters == 0) && rtx_equal_function_value_matters == 0)
&& (register_operand (operands[0], SFmode) && (register_operand (operands[0], SFmode)
|| register_operand (operands[1], SFmode) || register_operand (operands[1], SFmode)
...@@ -1078,6 +1105,8 @@ ...@@ -1078,6 +1105,8 @@
[(set (match_operand:SF 0 "general_operand" "=r,*f,d,d,m") [(set (match_operand:SF 0 "general_operand" "=r,*f,d,d,m")
(match_operand:SF 1 "fpmove_src_operand" "r,GH,F,m,d"))] (match_operand:SF 1 "fpmove_src_operand" "r,GH,F,m,d"))]
"(current_function_args_size != 0 "(current_function_args_size != 0
|| current_function_varargs != 0
|| current_function_stdarg != 0
|| rtx_equal_function_value_matters != 0) || rtx_equal_function_value_matters != 0)
&& (register_operand (operands[0], SFmode) && (register_operand (operands[0], SFmode)
|| register_operand (operands[1], SFmode))" || register_operand (operands[1], SFmode))"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment