OSDN Git Service

* calls.c (emit_library_call_value): Don't use a fixed
authorghazi <ghazi@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 31 Aug 2001 19:28:58 +0000 (19:28 +0000)
committerghazi <ghazi@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 31 Aug 2001 19:28:58 +0000 (19:28 +0000)
argument after VA_CLOSE, i.e. out of scope in traditional C.

* emit-rtl.c (gen_rtvec): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@45332 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/calls.c
gcc/emit-rtl.c

index f4037ca..8caa502 100644 (file)
@@ -1,5 +1,12 @@
 2001-08-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
 
+       * 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  <ghazi@caip.rutgers.edu>
+
        * Makefile.in (c-pragma.o): Depend on output.h.
        (reorg.o): Depend on except.h.
 
index 275ca1d..8d6d084 100644 (file)
@@ -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;
 }
 \f
 #if 0
index 379bfb6..d04e3d2 100644 (file)
@@ -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