diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1996-11-15 13:39:07 -0500 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1996-11-15 13:39:07 -0500 |
commit | ba444f920fc8106a6123b249a872fe7797b923a2 (patch) | |
tree | c29a33d2871f86521a59aa02ff8333ba9a4f2a63 | |
parent | 59888de215eb75774c958582e4b4cc91bdb3d232 (diff) | |
download | gcc-ba444f920fc8106a6123b249a872fe7797b923a2.zip gcc-ba444f920fc8106a6123b249a872fe7797b923a2.tar.gz gcc-ba444f920fc8106a6123b249a872fe7797b923a2.tar.bz2 |
(gen_rtvec_vv): New function.
(copy_rtx_if_shared): Call it.
From-SVN: r13167
-rw-r--r-- | gcc/emit-rtl.c | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c index 66b5d22..f328d7a 100644 --- a/gcc/emit-rtl.c +++ b/gcc/emit-rtl.c @@ -470,6 +470,25 @@ gen_rtvec_v (n, argp) return rt_val; } + +rtvec +gen_rtvec_vv (n, argp) + int n; + rtunion *argp; +{ + register int i; + register rtvec rt_val; + + if (n == 0) + return NULL_RTVEC; /* Don't allocate an empty rtvec... */ + + rt_val = rtvec_alloc (n); /* Allocate an rtvec... */ + + for (i = 0; i < n; i++) + rt_val->elem[i].rtx = (argp++)->rtx; + + return rt_val; +} /* Generate a REG rtx for a new pseudo register of mode MODE. This pseudo is assigned the next sequential register number. */ @@ -1664,7 +1683,7 @@ copy_rtx_if_shared (orig) int len = XVECLEN (x, i); if (copied && len > 0) - XVEC (x, i) = gen_rtvec_v (len, &XVECEXP (x, i, 0)); + XVEC (x, i) = gen_rtvec_vv (len, XVEC (x, i)->elem); for (j = 0; j < len; j++) XVECEXP (x, i, j) = copy_rtx_if_shared (XVECEXP (x, i, j)); } |