]> gcc.gnu.org Git - gcc.git/commitdiff
(expand_call): Declare and set current_call_is_indirect.
authorRichard Stallman <rms@gnu.org>
Thu, 20 May 1993 05:06:12 +0000 (05:06 +0000)
committerRichard Stallman <rms@gnu.org>
Thu, 20 May 1993 05:06:12 +0000 (05:06 +0000)
(emit_library_call, emit_library_call_value): Likewise.

From-SVN: r4515

gcc/calls.c

index f1cbfc2551ca222aaff6ebbc4476ccf3b155c98c..4e0e4e2b9dc78cca53365f8846827d94d931e33f 100644 (file)
@@ -473,6 +473,8 @@ expand_call (exp, target, ignore)
   CUMULATIVE_ARGS args_so_far;
   /* Nonzero if a reg parm has been scanned.  */
   int reg_parm_seen;
+  /* Nonzero if this is an indirect function call.  */
+  int current_call_is_indirect = 0;
 
   /* Nonzero if we must avoid push-insns in the args for this call. 
      If stack space is allocated for register parameters, but not by the
@@ -732,6 +734,15 @@ expand_call (exp, target, ignore)
   if (fndecl && DECL_NAME (fndecl))
     name = IDENTIFIER_POINTER (DECL_NAME (fndecl));
 
+  /* On some machines (such as the PA) indirect calls have a different
+     calling convention than normal calls.  FUNCTION_ARG in the target
+     description can look at current_call_is_indirect to determine which
+     calling convention to use.  */
+  current_call_is_indirect = (fndecl == 0);
+#if 0
+    = TREE_CODE (TREE_OPERAND (exp, 0)) == NON_LVALUE_EXPR ? 1 : 0;
+#endif
+
 #if 0
   /* Unless it's a call to a specific function that isn't alloca,
      if it has one argument, we must assume it might be alloca.  */
@@ -2007,6 +2018,8 @@ emit_library_call (va_alist)
   int old_inhibit_defer_pop = inhibit_defer_pop;
   int no_queue = 0;
   rtx use_insns;
+  /* library calls are never indirect calls.  */
+  int current_call_is_indirect = 0;
 
   va_start (p);
   orgfun = fun = va_arg (p, rtx);
@@ -2261,6 +2274,8 @@ emit_library_call_value (va_alist)
   rtx use_insns;
   rtx value;
   rtx mem_value = 0;
+  /* library calls are never indirect calls.  */
+  int current_call_is_indirect = 0;
 
   va_start (p);
   orgfun = fun = va_arg (p, rtx);
This page took 0.06541 seconds and 5 git commands to generate.