This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

shallow_copy_rtx patch applied to rtl.h / rtl.c / reload.c


Reviewed by Jim Wilson.

Mon Mar 22 21:08:59 1999  J"orn Rennecke <amylaar@cygnus.co.uk>

	* rtl.h (shallow_copy_rtx): Declare.
	* rtl.c (shallow_copy_rtx): New function.
	* reload.c (find_reloads_toplev): Use shallow_copy_rtx instead of
	copy_rtx.

Index: rtl.h
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/rtl.h,v
retrieving revision 1.92
diff -p -r1.92 rtl.h
*** rtl.h	1999/03/16 15:49:28	1.92
--- rtl.h	1999/03/18 20:25:47
*************** extern rtvec rtvec_alloc		PROTO((int));
*** 889,894 ****
--- 889,895 ----
  extern rtx copy_rtx			PROTO((rtx));
  extern rtx copy_rtx_if_shared		PROTO((rtx));
  extern rtx copy_most_rtx		PROTO((rtx, rtx));
+ extern rtx shallow_copy_rtx		PROTO((rtx));
  extern rtvec gen_rtvec_v		PROTO((int, rtx *));
  extern rtvec gen_rtvec_vv		PROTO((int, rtunion *));
  extern rtx gen_reg_rtx			PROTO((enum machine_mode));
Index: rtl.c
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/rtl.c,v
retrieving revision 1.28
diff -p -r1.28 rtl.c
*** rtl.c	1999/02/25 23:45:33	1.28
--- rtl.c	1999/03/18 20:25:47
*************** copy_most_rtx (orig, may_share)
*** 488,493 ****
--- 488,515 ----
      }
    return copy;
  }
+ 
+ /* Create a new copy of an rtx.  Only copy just one level.  */
+ rtx
+ shallow_copy_rtx (orig)
+      rtx orig;
+ {
+   register int i;
+   register char *format_ptr;
+   register RTX_CODE code = GET_CODE (orig);
+   register rtx copy = rtx_alloc (code);
+ 
+   PUT_MODE (copy, GET_MODE (orig));
+   copy->in_struct = orig->in_struct;
+   copy->volatil = orig->volatil;
+   copy->unchanging = orig->unchanging;
+   copy->integrated = orig->integrated;
+ 
+   for (i = 0; i < GET_RTX_LENGTH (code); i++)
+     copy->fld[i] = orig->fld[i];
+ 
+   return copy;
+ }
  
  /* Subroutines of read_rtx.  */
  
Index: reload.c
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/reload.c,v
retrieving revision 1.70
diff -p -r1.70 reload.c
*** reload.c	1999/03/18 11:12:01	1.70
--- reload.c	1999/03/18 20:25:49
*************** find_reloads_toplev (x, opnum, type, ind
*** 4517,4523 ****
  	     not to do the change.  */
  	  if (new_part != XEXP (x, i) && ! CONSTANT_P (new_part) && ! copied)
  	    {
! 	      x = copy_rtx (x);
  	      copied = 1;
  	    }
  	  XEXP (x, i) = new_part;
--- 4517,4523 ----
  	     not to do the change.  */
  	  if (new_part != XEXP (x, i) && ! CONSTANT_P (new_part) && ! copied)
  	    {
! 	      x = shallow_copy_rtx (x);
  	      copied = 1;
  	    }
  	  XEXP (x, i) = new_part;


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]