aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1996-11-15 13:39:07 -0500
committerRichard Kenner <kenner@gcc.gnu.org>1996-11-15 13:39:07 -0500
commitba444f920fc8106a6123b249a872fe7797b923a2 (patch)
treec29a33d2871f86521a59aa02ff8333ba9a4f2a63
parent59888de215eb75774c958582e4b4cc91bdb3d232 (diff)
downloadgcc-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.c21
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));
}