public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* function.c has unprotected call to FUNCTION_ARG_PASS_BY_REFERENCE
@ 2004-07-08  0:10 Alexandre Oliva
  2004-07-08  1:06 ` Richard Henderson
  0 siblings, 1 reply; 5+ messages in thread
From: Alexandre Oliva @ 2004-07-08  0:10 UTC (permalink / raw)
  To: gcc-patches

[-- Attachment #1: Type: text/plain, Size: 262 bytes --]

... unlike the call presumably copied from calls.c.  Machines that
don't have FUNCTION_ARG_PASS_BY_REFERENCE lose.  This patch fixes it.
Installed as obviously correct.

Hmm...  Maybe it should be defined to 0 in defaults.h?  Ok to make
this additional change?


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: function-arg-by-ref-if-defined.patch --]
[-- Type: text/x-patch, Size: 996 bytes --]

Index: gcc/ChangeLog
from  Alexandre Oliva  <aoliva@redhat.com>

	* function.c (assign_parm_find_data_types): Call
	FUNCTION_ARG_PASS_BY_REFERENCE only if it's defined.

Index: gcc/function.c
===================================================================
RCS file: /cvs/uberbaum/gcc/function.c,v
retrieving revision 1.547
diff -u -p -r1.547 function.c
--- gcc/function.c 7 Jul 2004 18:40:02 -0000 1.547
+++ gcc/function.c 7 Jul 2004 22:59:37 -0000
@@ -2246,8 +2246,11 @@ assign_parm_find_data_types (struct assi
      the machine requires these objects be passed that way.  */
   if (CONTAINS_PLACEHOLDER_P (TYPE_SIZE (passed_type))
       || TREE_ADDRESSABLE (passed_type)
+#ifdef FUNCTION_ARG_PASS_BY_REFERENCE
       || FUNCTION_ARG_PASS_BY_REFERENCE (all->args_so_far, passed_mode,
-					 passed_type, data->named_arg))
+					 passed_type, data->named_arg)
+#endif
+      )
     {
       passed_type = nominal_type = build_pointer_type (passed_type);
       data->passed_pointer = true;

[-- Attachment #3: Type: text/plain, Size: 188 bytes --]


-- 
Alexandre Oliva             http://www.ic.unicamp.br/~oliva/
Red Hat Compiler Engineer   aoliva@{redhat.com, gcc.gnu.org}
Free Software Evangelist  oliva@{lsd.ic.unicamp.br, gnu.org}

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: function.c has unprotected call to FUNCTION_ARG_PASS_BY_REFERENCE
  2004-07-08  0:10 function.c has unprotected call to FUNCTION_ARG_PASS_BY_REFERENCE Alexandre Oliva
@ 2004-07-08  1:06 ` Richard Henderson
  2004-07-08  6:57   ` Alexandre Oliva
  0 siblings, 1 reply; 5+ messages in thread
From: Richard Henderson @ 2004-07-08  1:06 UTC (permalink / raw)
  To: Alexandre Oliva; +Cc: gcc-patches

On Wed, Jul 07, 2004 at 08:02:56PM -0300, Alexandre Oliva wrote:
> Hmm...  Maybe it should be defined to 0 in defaults.h?

I had planned to put this in expr.h with the other related macros.


r~

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: function.c has unprotected call to FUNCTION_ARG_PASS_BY_REFERENCE
  2004-07-08  1:06 ` Richard Henderson
@ 2004-07-08  6:57   ` Alexandre Oliva
  2004-07-08  7:17     ` Richard Henderson
  0 siblings, 1 reply; 5+ messages in thread
From: Alexandre Oliva @ 2004-07-08  6:57 UTC (permalink / raw)
  To: Richard Henderson; +Cc: gcc-patches

[-- Attachment #1: Type: text/plain, Size: 495 bytes --]

On Jul  7, 2004, Richard Henderson <rth@redhat.com> wrote:

> On Wed, Jul 07, 2004 at 08:02:56PM -0300, Alexandre Oliva wrote:
>> Hmm...  Maybe it should be defined to 0 in defaults.h?

> I had planned to put this in expr.h with the other related macros.

I went ahead and handled a few other macros that looked easy.  Then I
commented them out from i386.h and verified it built.  Then I put them
back in and started a bootstrap.  Will have results in a while.  Ok to
install if it bootstraps?


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: gcc-expr-func-macro-defaults.patch --]
[-- Type: text/x-patch, Size: 6707 bytes --]

Index: gcc/ChangeLog
from  Alexandre Oliva  <aoliva@redhat.com>

	* expr.h (FUNCTION_ARG_PARTIAL_NREGS): Default to 0.
	(FUNCTION_ARG_PASS_BY_REFERENCE): Likewise.
	(FUNCTION_ARG_CALLEE_COPIES): Likewise.
	* calls.c: Remove ifdefs of macros above.
	* functions.c: Likewise.
	* expr.c: Likewise.

Index: gcc/calls.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/calls.c,v
retrieving revision 1.344
diff -u -p -r1.344 calls.c
--- gcc/calls.c 8 Jul 2004 05:58:35 -0000 1.344
+++ gcc/calls.c 8 Jul 2004 06:26:35 -0000
@@ -975,16 +975,13 @@ initialize_argument_information (int num
       /* See if this argument should be passed by invisible reference.  */
       if (CONTAINS_PLACEHOLDER_P (TYPE_SIZE (type))
 	  || TREE_ADDRESSABLE (type)
-#ifdef FUNCTION_ARG_PASS_BY_REFERENCE
 	  || FUNCTION_ARG_PASS_BY_REFERENCE (*args_so_far, TYPE_MODE (type),
 					     type, argpos < n_named_args)
-#endif
 	  )
 	{
 	  /* If we're compiling a thunk, pass through invisible
              references instead of making a copy.  */
 	  if (call_from_thunk_p
-#ifdef FUNCTION_ARG_CALLEE_COPIES
 	      || (FUNCTION_ARG_CALLEE_COPIES (*args_so_far, TYPE_MODE (type),
 					     type, argpos < n_named_args)
 		  /* If it's in a register, we must make a copy of it too.  */
@@ -992,7 +989,6 @@ initialize_argument_information (int num
 		  && !(TREE_CODE (args[i].tree_value) == VAR_DECL
 		       && REG_P (DECL_RTL (args[i].tree_value)))
 		  && ! TREE_ADDRESSABLE (type))
-#endif
 	      )
 	    {
 	      /* C++ uses a TARGET_EXPR to indicate that we want to make a
@@ -1095,12 +1091,10 @@ initialize_argument_information (int num
       args[i].tail_call_reg = args[i].reg;
 #endif
 
-#ifdef FUNCTION_ARG_PARTIAL_NREGS
       if (args[i].reg)
 	args[i].partial
 	  = FUNCTION_ARG_PARTIAL_NREGS (*args_so_far, mode, type,
 					argpos < n_named_args);
-#endif
 
       args[i].pass_on_stack = MUST_PASS_IN_STACK (mode, type);
 
@@ -3541,10 +3535,8 @@ emit_library_call_value_1 (int retval, r
       argvec[count].partial = 0;
 
       argvec[count].reg = FUNCTION_ARG (args_so_far, Pmode, NULL_TREE, 1);
-#ifdef FUNCTION_ARG_PARTIAL_NREGS
       if (FUNCTION_ARG_PARTIAL_NREGS (args_so_far, Pmode, NULL_TREE, 1))
 	abort ();
-#endif
 
       locate_and_pad_parm (Pmode, NULL_TREE,
 #ifdef STACK_PARMS_IN_REG_PARM_AREA
@@ -3582,15 +3574,12 @@ emit_library_call_value_1 (int retval, r
 	  && ! (CONSTANT_P (val) && LEGITIMATE_CONSTANT_P (val)))
 	val = force_operand (val, NULL_RTX);
 
-#ifdef FUNCTION_ARG_PASS_BY_REFERENCE
       if (FUNCTION_ARG_PASS_BY_REFERENCE (args_so_far, mode, NULL_TREE, 1))
 	{
 	  rtx slot;
 	  int must_copy = 1
-#ifdef FUNCTION_ARG_CALLEE_COPIES
 	    && ! FUNCTION_ARG_CALLEE_COPIES (args_so_far, mode,
 					     NULL_TREE, 1)
-#endif
 	    ;
 
 	  /* loop.c won't look at CALL_INSN_FUNCTION_USAGE of const/pure
@@ -3643,19 +3632,14 @@ emit_library_call_value_1 (int retval, r
 	  mode = Pmode;
 	  val = force_operand (XEXP (slot, 0), NULL_RTX);
 	}
-#endif
 
       argvec[count].value = val;
       argvec[count].mode = mode;
 
       argvec[count].reg = FUNCTION_ARG (args_so_far, mode, NULL_TREE, 1);
 
-#ifdef FUNCTION_ARG_PARTIAL_NREGS
       argvec[count].partial
 	= FUNCTION_ARG_PARTIAL_NREGS (args_so_far, mode, NULL_TREE, 1);
-#else
-      argvec[count].partial = 0;
-#endif
 
       locate_and_pad_parm (mode, NULL_TREE,
 #ifdef STACK_PARMS_IN_REG_PARM_AREA
Index: gcc/expr.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/expr.c,v
retrieving revision 1.672
diff -u -p -r1.672 expr.c
--- gcc/expr.c 7 Jul 2004 21:26:28 -0000 1.672
+++ gcc/expr.c 8 Jul 2004 06:26:42 -0000
@@ -1423,11 +1423,9 @@ block_move_libcall_safe_for_call_parm (v
 	rtx tmp = FUNCTION_ARG (args_so_far, mode, NULL_TREE, 1);
 	if (!tmp || !REG_P (tmp))
 	  return false;
-#ifdef FUNCTION_ARG_PARTIAL_NREGS
 	if (FUNCTION_ARG_PARTIAL_NREGS (args_so_far, mode,
 					NULL_TREE, 1))
 	  return false;
-#endif
 	FUNCTION_ARG_ADVANCE (args_so_far, mode, NULL_TREE, 1);
       }
   }
Index: gcc/expr.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/expr.h,v
retrieving revision 1.160
diff -u -p -r1.160 expr.h
--- gcc/expr.h 7 Jul 2004 19:23:58 -0000 1.160
+++ gcc/expr.h 8 Jul 2004 06:26:43 -0000
@@ -203,6 +203,18 @@ do {							\
 #define FUNCTION_ARG_BOUNDARY(MODE, TYPE)	PARM_BOUNDARY
 #endif
 
+#ifndef FUNCTION_ARG_PARTIAL_NREGS
+#define FUNCTION_ARG_PARTIAL_NREGS(CUM, MODE, TYPE, NAMED) 0
+#endif
+
+#ifndef FUNCTION_ARG_PASS_BY_REFERENCE
+#define FUNCTION_ARG_PASS_BY_REFERENCE(CUM, MODE, TYPE, NAMED) 0
+#endif
+
+#ifndef FUNCTION_ARG_CALLEE_COPIES
+#define FUNCTION_ARG_CALLEE_COPIES(CUM, MODE, TYPE, NAMED) 0
+#endif
+
 tree split_complex_types (tree);
 tree split_complex_values (tree);
 
Index: gcc/function.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/function.c,v
retrieving revision 1.548
diff -u -p -r1.548 function.c
--- gcc/function.c 7 Jul 2004 23:02:22 -0000 1.548
+++ gcc/function.c 8 Jul 2004 06:26:47 -0000
@@ -2246,10 +2246,8 @@ assign_parm_find_data_types (struct assi
      the machine requires these objects be passed that way.  */
   if (CONTAINS_PLACEHOLDER_P (TYPE_SIZE (passed_type))
       || TREE_ADDRESSABLE (passed_type)
-#ifdef FUNCTION_ARG_PASS_BY_REFERENCE
       || FUNCTION_ARG_PASS_BY_REFERENCE (all->args_so_far, passed_mode,
 					 passed_type, data->named_arg)
-#endif
       )
     {
       passed_type = nominal_type = build_pointer_type (passed_type);
@@ -2366,7 +2364,6 @@ assign_parm_find_entry_rtl (struct assig
   if (MUST_PASS_IN_STACK (data->promoted_mode, data->passed_type))
     entry_parm = 0;
 
-#ifdef FUNCTION_ARG_PARTIAL_NREGS
   if (entry_parm)
     {
       int partial;
@@ -2409,7 +2406,6 @@ assign_parm_find_entry_rtl (struct assig
 	  all->extra_pretend_bytes = all->pretend_args_size;
 	}
     }
-#endif
 
   locate_and_pad_parm (data->promoted_mode, data->passed_type, in_regs,
 		       entry_parm ? data->partial : 0, current_function_decl,
@@ -2854,7 +2850,6 @@ assign_parm_setup_reg (struct assign_par
       data->stack_parm = NULL;
     }
 
-#ifdef FUNCTION_ARG_CALLEE_COPIES
   /* If we are passed an arg by reference and it is our responsibility
      to make a copy, do it now.
      PASSED_TYPE and PASSED mode now refer to the pointer, not the
@@ -2899,7 +2894,6 @@ assign_parm_setup_reg (struct assign_par
 	  did_conversion = true;
 	}
     }
-#endif /* FUNCTION_ARG_CALLEE_COPIES */
 
   /* Mark the register as eliminable if we did no conversion and it was
      copied from memory at a fixed offset, and the arg pointer was not

[-- Attachment #3: Type: text/plain, Size: 188 bytes --]


-- 
Alexandre Oliva             http://www.ic.unicamp.br/~oliva/
Red Hat Compiler Engineer   aoliva@{redhat.com, gcc.gnu.org}
Free Software Evangelist  oliva@{lsd.ic.unicamp.br, gnu.org}

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: function.c has unprotected call to FUNCTION_ARG_PASS_BY_REFERENCE
  2004-07-08  6:57   ` Alexandre Oliva
@ 2004-07-08  7:17     ` Richard Henderson
  2004-07-08 18:33       ` Alexandre Oliva
  0 siblings, 1 reply; 5+ messages in thread
From: Richard Henderson @ 2004-07-08  7:17 UTC (permalink / raw)
  To: Alexandre Oliva; +Cc: gcc-patches

On Thu, Jul 08, 2004 at 03:35:29AM -0300, Alexandre Oliva wrote:
> 	* expr.h (FUNCTION_ARG_PARTIAL_NREGS): Default to 0.
> 	(FUNCTION_ARG_PASS_BY_REFERENCE): Likewise.
> 	(FUNCTION_ARG_CALLEE_COPIES): Likewise.
> 	* calls.c: Remove ifdefs of macros above.
> 	* functions.c: Likewise.
> 	* expr.c: Likewise.

Ok.

>  	  int must_copy = 1
> -#ifdef FUNCTION_ARG_CALLEE_COPIES
>  	    && ! FUNCTION_ARG_CALLEE_COPIES (args_so_far, mode,
>  					     NULL_TREE, 1)
> -#endif

Tidy up the "1 && foo" ?



r~

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: function.c has unprotected call to FUNCTION_ARG_PASS_BY_REFERENCE
  2004-07-08  7:17     ` Richard Henderson
@ 2004-07-08 18:33       ` Alexandre Oliva
  0 siblings, 0 replies; 5+ messages in thread
From: Alexandre Oliva @ 2004-07-08 18:33 UTC (permalink / raw)
  To: Richard Henderson; +Cc: gcc-patches

[-- Attachment #1: Type: text/plain, Size: 286 bytes --]

On Jul  8, 2004, Richard Henderson <rth@redhat.com> wrote:

>> int must_copy = 1
>> -#ifdef FUNCTION_ARG_CALLEE_COPIES
>> && ! FUNCTION_ARG_CALLEE_COPIES (args_so_far, mode,
>> NULL_TREE, 1)
>> -#endif

> Tidy up the "1 && foo" ?

Ah, good catch, thanks.  Here's what I'm checking in.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: gcc-expr-func-macro-defaults.patch --]
[-- Type: text/x-patch, Size: 6871 bytes --]

Index: gcc/ChangeLog
from  Alexandre Oliva  <aoliva@redhat.com>

	* expr.h (FUNCTION_ARG_PARTIAL_NREGS): Default to 0.
	(FUNCTION_ARG_PASS_BY_REFERENCE): Likewise.
	(FUNCTION_ARG_CALLEE_COPIES): Likewise.
	* calls.c: Remove ifdefs of macros above.
	* functions.c: Likewise.
	* expr.c: Likewise.

Index: gcc/expr.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/expr.h,v
retrieving revision 1.160
diff -u -p -r1.160 expr.h
--- gcc/expr.h 7 Jul 2004 19:23:58 -0000 1.160
+++ gcc/expr.h 8 Jul 2004 16:53:14 -0000
@@ -203,6 +203,18 @@ do {							\
 #define FUNCTION_ARG_BOUNDARY(MODE, TYPE)	PARM_BOUNDARY
 #endif
 
+#ifndef FUNCTION_ARG_PARTIAL_NREGS
+#define FUNCTION_ARG_PARTIAL_NREGS(CUM, MODE, TYPE, NAMED) 0
+#endif
+
+#ifndef FUNCTION_ARG_PASS_BY_REFERENCE
+#define FUNCTION_ARG_PASS_BY_REFERENCE(CUM, MODE, TYPE, NAMED) 0
+#endif
+
+#ifndef FUNCTION_ARG_CALLEE_COPIES
+#define FUNCTION_ARG_CALLEE_COPIES(CUM, MODE, TYPE, NAMED) 0
+#endif
+
 tree split_complex_types (tree);
 tree split_complex_values (tree);
 
Index: gcc/expr.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/expr.c,v
retrieving revision 1.674
diff -u -p -r1.674 expr.c
--- gcc/expr.c 8 Jul 2004 08:44:04 -0000 1.674
+++ gcc/expr.c 8 Jul 2004 16:53:39 -0000
@@ -1424,11 +1424,9 @@ block_move_libcall_safe_for_call_parm (v
 	rtx tmp = FUNCTION_ARG (args_so_far, mode, NULL_TREE, 1);
 	if (!tmp || !REG_P (tmp))
 	  return false;
-#ifdef FUNCTION_ARG_PARTIAL_NREGS
 	if (FUNCTION_ARG_PARTIAL_NREGS (args_so_far, mode,
 					NULL_TREE, 1))
 	  return false;
-#endif
 	FUNCTION_ARG_ADVANCE (args_so_far, mode, NULL_TREE, 1);
       }
   }
Index: gcc/calls.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/calls.c,v
retrieving revision 1.345
diff -u -p -r1.345 calls.c
--- gcc/calls.c 8 Jul 2004 07:45:32 -0000 1.345
+++ gcc/calls.c 8 Jul 2004 16:53:48 -0000
@@ -975,16 +975,13 @@ initialize_argument_information (int num
       /* See if this argument should be passed by invisible reference.  */
       if (CONTAINS_PLACEHOLDER_P (TYPE_SIZE (type))
 	  || TREE_ADDRESSABLE (type)
-#ifdef FUNCTION_ARG_PASS_BY_REFERENCE
 	  || FUNCTION_ARG_PASS_BY_REFERENCE (*args_so_far, TYPE_MODE (type),
 					     type, argpos < n_named_args)
-#endif
 	  )
 	{
 	  /* If we're compiling a thunk, pass through invisible
              references instead of making a copy.  */
 	  if (call_from_thunk_p
-#ifdef FUNCTION_ARG_CALLEE_COPIES
 	      || (FUNCTION_ARG_CALLEE_COPIES (*args_so_far, TYPE_MODE (type),
 					     type, argpos < n_named_args)
 		  /* If it's in a register, we must make a copy of it too.  */
@@ -992,7 +989,6 @@ initialize_argument_information (int num
 		  && !(TREE_CODE (args[i].tree_value) == VAR_DECL
 		       && REG_P (DECL_RTL (args[i].tree_value)))
 		  && ! TREE_ADDRESSABLE (type))
-#endif
 	      )
 	    {
 	      /* C++ uses a TARGET_EXPR to indicate that we want to make a
@@ -1095,12 +1091,10 @@ initialize_argument_information (int num
       args[i].tail_call_reg = args[i].reg;
 #endif
 
-#ifdef FUNCTION_ARG_PARTIAL_NREGS
       if (args[i].reg)
 	args[i].partial
 	  = FUNCTION_ARG_PARTIAL_NREGS (*args_so_far, mode, type,
 					argpos < n_named_args);
-#endif
 
       args[i].pass_on_stack = MUST_PASS_IN_STACK (mode, type);
 
@@ -3525,10 +3519,8 @@ emit_library_call_value_1 (int retval, r
       argvec[count].partial = 0;
 
       argvec[count].reg = FUNCTION_ARG (args_so_far, Pmode, NULL_TREE, 1);
-#ifdef FUNCTION_ARG_PARTIAL_NREGS
       if (FUNCTION_ARG_PARTIAL_NREGS (args_so_far, Pmode, NULL_TREE, 1))
 	abort ();
-#endif
 
       locate_and_pad_parm (Pmode, NULL_TREE,
 #ifdef STACK_PARMS_IN_REG_PARM_AREA
@@ -3566,16 +3558,11 @@ emit_library_call_value_1 (int retval, r
 	  && ! (CONSTANT_P (val) && LEGITIMATE_CONSTANT_P (val)))
 	val = force_operand (val, NULL_RTX);
 
-#ifdef FUNCTION_ARG_PASS_BY_REFERENCE
       if (FUNCTION_ARG_PASS_BY_REFERENCE (args_so_far, mode, NULL_TREE, 1))
 	{
 	  rtx slot;
-	  int must_copy = 1
-#ifdef FUNCTION_ARG_CALLEE_COPIES
-	    && ! FUNCTION_ARG_CALLEE_COPIES (args_so_far, mode,
-					     NULL_TREE, 1)
-#endif
-	    ;
+	  int must_copy = ! FUNCTION_ARG_CALLEE_COPIES (args_so_far, mode,
+							NULL_TREE, 1);
 
 	  /* loop.c won't look at CALL_INSN_FUNCTION_USAGE of const/pure
 	     functions, so we have to pretend this isn't such a function.  */
@@ -3627,19 +3614,14 @@ emit_library_call_value_1 (int retval, r
 	  mode = Pmode;
 	  val = force_operand (XEXP (slot, 0), NULL_RTX);
 	}
-#endif
 
       argvec[count].value = val;
       argvec[count].mode = mode;
 
       argvec[count].reg = FUNCTION_ARG (args_so_far, mode, NULL_TREE, 1);
 
-#ifdef FUNCTION_ARG_PARTIAL_NREGS
       argvec[count].partial
 	= FUNCTION_ARG_PARTIAL_NREGS (args_so_far, mode, NULL_TREE, 1);
-#else
-      argvec[count].partial = 0;
-#endif
 
       locate_and_pad_parm (mode, NULL_TREE,
 #ifdef STACK_PARMS_IN_REG_PARM_AREA
Index: gcc/function.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/function.c,v
retrieving revision 1.550
diff -u -p -r1.550 function.c
--- gcc/function.c 8 Jul 2004 07:45:39 -0000 1.550
+++ gcc/function.c 8 Jul 2004 16:54:07 -0000
@@ -2241,10 +2241,8 @@ assign_parm_find_data_types (struct assi
      the machine requires these objects be passed that way.  */
   if (CONTAINS_PLACEHOLDER_P (TYPE_SIZE (passed_type))
       || TREE_ADDRESSABLE (passed_type)
-#ifdef FUNCTION_ARG_PASS_BY_REFERENCE
       || FUNCTION_ARG_PASS_BY_REFERENCE (all->args_so_far, passed_mode,
 					 passed_type, data->named_arg)
-#endif
       )
     {
       passed_type = nominal_type = build_pointer_type (passed_type);
@@ -2361,7 +2359,6 @@ assign_parm_find_entry_rtl (struct assig
   if (MUST_PASS_IN_STACK (data->promoted_mode, data->passed_type))
     entry_parm = 0;
 
-#ifdef FUNCTION_ARG_PARTIAL_NREGS
   if (entry_parm)
     {
       int partial;
@@ -2404,7 +2401,6 @@ assign_parm_find_entry_rtl (struct assig
 	  all->extra_pretend_bytes = all->pretend_args_size;
 	}
     }
-#endif
 
   locate_and_pad_parm (data->promoted_mode, data->passed_type, in_regs,
 		       entry_parm ? data->partial : 0, current_function_decl,
@@ -2849,7 +2845,6 @@ assign_parm_setup_reg (struct assign_par
       data->stack_parm = NULL;
     }
 
-#ifdef FUNCTION_ARG_CALLEE_COPIES
   /* If we are passed an arg by reference and it is our responsibility
      to make a copy, do it now.
      PASSED_TYPE and PASSED mode now refer to the pointer, not the
@@ -2894,7 +2889,6 @@ assign_parm_setup_reg (struct assign_par
 	  did_conversion = true;
 	}
     }
-#endif /* FUNCTION_ARG_CALLEE_COPIES */
 
   /* Mark the register as eliminable if we did no conversion and it was
      copied from memory at a fixed offset, and the arg pointer was not

[-- Attachment #3: Type: text/plain, Size: 188 bytes --]


-- 
Alexandre Oliva             http://www.ic.unicamp.br/~oliva/
Red Hat Compiler Engineer   aoliva@{redhat.com, gcc.gnu.org}
Free Software Evangelist  oliva@{lsd.ic.unicamp.br, gnu.org}

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2004-07-08 16:58 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-07-08  0:10 function.c has unprotected call to FUNCTION_ARG_PASS_BY_REFERENCE Alexandre Oliva
2004-07-08  1:06 ` Richard Henderson
2004-07-08  6:57   ` Alexandre Oliva
2004-07-08  7:17     ` Richard Henderson
2004-07-08 18:33       ` Alexandre Oliva

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).