From: Kaveh R. Ghazi Date: Fri, 31 Aug 2001 19:28:58 +0000 (+0000) Subject: calls.c (emit_library_call_value): Don't use a fixed argument after VA_CLOSE, i.e. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=6268b92246a83813217648665eaf168eb02e19ba;p=gcc.git calls.c (emit_library_call_value): Don't use a fixed argument after VA_CLOSE, i.e. * calls.c (emit_library_call_value): Don't use a fixed argument after VA_CLOSE, i.e. out of scope in traditional C. * emit-rtl.c (gen_rtvec): Likewise. From-SVN: r45332 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f4037caa0ba..8caa5023473 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2001-08-31 Kaveh R. Ghazi + + * calls.c (emit_library_call_value): Don't use a fixed + argument after VA_CLOSE, i.e. out of scope in traditional C. + + * emit-rtl.c (gen_rtvec): Likewise. + 2001-08-31 Kaveh R. Ghazi * Makefile.in (c-pragma.o): Depend on output.h. diff --git a/gcc/calls.c b/gcc/calls.c index 275ca1d53f5..8d6d0849148 100644 --- a/gcc/calls.c +++ b/gcc/calls.c @@ -4227,6 +4227,8 @@ emit_library_call_value VPARAMS((rtx orgfun, rtx value, enum libcall_type fn_type, enum machine_mode outmode, int nargs, ...)) { + rtx result; + VA_OPEN (p, nargs); VA_FIXEDARG (p, rtx, orgfun); VA_FIXEDARG (p, rtx, value); @@ -4234,11 +4236,12 @@ emit_library_call_value VPARAMS((rtx orgfun, rtx value, VA_FIXEDARG (p, enum machine_mode, outmode); VA_FIXEDARG (p, int, nargs); - value = emit_library_call_value_1 (1, orgfun, value, fn_type, outmode, nargs, p); + result = emit_library_call_value_1 (1, orgfun, value, fn_type, outmode, + nargs, p); VA_CLOSE (p); - return value; + return result; } #if 0 diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c index 379bfb6b809..d04e3d23ba4 100644 --- a/gcc/emit-rtl.c +++ b/gcc/emit-rtl.c @@ -517,7 +517,7 @@ gen_rtx VPARAMS ((enum rtx_code code, enum machine_mode mode, ...)) rtvec gen_rtvec VPARAMS ((int n, ...)) { - int i; + int i, save_n; rtx *vector; VA_OPEN (p, n); @@ -530,9 +530,12 @@ gen_rtvec VPARAMS ((int n, ...)) for (i = 0; i < n; i++) vector[i] = va_arg (p, rtx); + + /* The definition of VA_* in K&R C causes `n' to go out of scope. */ + save_n = n; VA_CLOSE (p); - return gen_rtvec_v (n, vector); + return gen_rtvec_v (save_n, vector); } rtvec