From: J"orn Rennecke Date: Mon, 22 Mar 1999 13:11:31 +0000 (+0000) Subject: rtl.h (shallow_copy_rtx): Declare. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ce9d4c6d80126b0d4549e80ddd92bfab017d22f4;p=gcc.git rtl.h (shallow_copy_rtx): Declare. * 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. From-SVN: r25897 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 70fbc03ef46..b44745a3414 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +Mon Mar 22 21:08:59 1999 J"orn Rennecke + + * 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. + Mon Mar 22 10:44:33 1999 Vladimir Makarov * config/h8300/h8300.md (adjust_length): New attribute. diff --git a/gcc/reload.c b/gcc/reload.c index 8ba0621068d..a68f2efa661 100644 --- a/gcc/reload.c +++ b/gcc/reload.c @@ -4517,7 +4517,7 @@ find_reloads_toplev (x, opnum, type, ind_levels, is_set_dest, insn) not to do the change. */ if (new_part != XEXP (x, i) && ! CONSTANT_P (new_part) && ! copied) { - x = copy_rtx (x); + x = shallow_copy_rtx (x); copied = 1; } XEXP (x, i) = new_part; diff --git a/gcc/rtl.c b/gcc/rtl.c index ae474d08bf1..6b04bcd82d5 100644 --- a/gcc/rtl.c +++ b/gcc/rtl.c @@ -488,6 +488,28 @@ copy_most_rtx (orig, may_share) } 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. */ diff --git a/gcc/rtl.h b/gcc/rtl.h index 249792bbde5..c1bd86ed8e4 100644 --- a/gcc/rtl.h +++ b/gcc/rtl.h @@ -889,6 +889,7 @@ extern rtvec rtvec_alloc PROTO((int)); 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));