summaryrefslogtreecommitdiff
path: root/gcc/emit-rtl.c
diff options
context:
space:
mode:
authorkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>1996-11-15 18:39:07 +0000
committerkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>1996-11-15 18:39:07 +0000
commitfbaa942278a722e6e0e8f3b07ada2e695707143d (patch)
treec29a33d2871f86521a59aa02ff8333ba9a4f2a63 /gcc/emit-rtl.c
parenteb3659b0ff6633e2d966e6824508e0e2c082ac23 (diff)
downloadgcc-fbaa942278a722e6e0e8f3b07ada2e695707143d.tar.gz
(gen_rtvec_vv): New function.
(copy_rtx_if_shared): Call it. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@13167 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/emit-rtl.c')
-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 66b5d22696e..f328d7a741b 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));
}