From f719a85deb51efd40101c6fcdc46c3bf7b73f0b5 Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Fri, 14 Jul 1995 08:05:18 -0400 Subject: [PATCH] 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 --- gcc/config/i960/i960.md | 41 +++++++++++++++++++++++++++++++++++------ 1 file changed, 35 insertions(+), 6 deletions(-) diff --git a/gcc/config/i960/i960.md b/gcc/config/i960/i960.md index 225d532433b..a458aadd01f 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))" -- 2.30.2