to seperate the address of instantiated variables */
to separate the address of instantiated variables */
assign_stack_local_for_pseudo_reg (mode, size, align)     enum machine_mode mode;     HOST_WIDE_INT size;     int align;{#if defined(FRAME_GROWS_DOWNWARD) || !defined(STACK_GROWS_DOWNWARD)  return assign_stack_local (mode, size, align);#else  tree blocks = DECL_INITIAL (current_function_decl);  rtx new;  HOST_WIDE_INT saved_frame_offset, units_per_push, starting_frame;  int first_call_from_purge_addressof, first_call_from_global_alloc;  if (! flag_propolice_protection      || size == 0      || ! blocks      || current_function_is_inlinable      || ! search_string_from_argsandvars (1)      || current_function_contains_functions)    return assign_stack_local (mode, size, align);  first_call_from_purge_addressof = !push_frame_offset && !cse_not_expected;  first_call_from_global_alloc = !saved_cse_not_expected && cse_not_expected;  saved_cse_not_expected = cse_not_expected;  starting_frame = (STARTING_FRAME_OFFSET)?    STARTING_FRAME_OFFSET:BIGGEST_ALIGNMENT / BITS_PER_UNIT;  units_per_push = MAX(BIGGEST_ALIGNMENT / BITS_PER_UNIT,		       GET_MODE_SIZE (mode));      if (first_call_from_purge_addressof)    {      push_frame_offset = push_allocated_offset;      if (check_out_of_frame_access (get_insns (), starting_frame))	{	  /* if there is an access beyond frame, push dummy region to seperate	     the address of instantiated variables */	  push_frame (GET_MODE_SIZE (DImode), 0);	  assign_stack_local (BLKmode, GET_MODE_SIZE (DImode), -1);	}    }  if (first_call_from_global_alloc)    {      push_frame_offset = push_allocated_offset = 0;      if (check_out_of_frame_access (get_insns (), starting_frame))	{	  if (STARTING_FRAME_OFFSET)	    {	      /* if there is an access beyond frame, push dummy region 		 to seperate the address of instantiated variables */	      push_frame (GET_MODE_SIZE (DImode), 0);	      assign_stack_local (BLKmode, GET_MODE_SIZE (DImode), -1);	    }	  else	    push_allocated_offset = starting_frame;	}    }  saved_frame_offset = frame_offset;  frame_offset = push_frame_offset;  new = assign_stack_local (mode, size, align);  push_frame_offset = frame_offset;  frame_offset = saved_frame_offset;    if (push_frame_offset > push_allocated_offset)    {      push_frame (units_per_push,		  push_allocated_offset + STARTING_FRAME_OFFSET);      assign_stack_local (BLKmode, units_per_push, -1);      push_allocated_offset += units_per_push;    }  /* At the second call from global alloc, alpha push frame and assign     a local variable to the top of the stack */  if (first_call_from_global_alloc && STARTING_FRAME_OFFSET == 0)    push_frame_offset = push_allocated_offset = 0;  return new;#endif}