diff options
author | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 1996-11-15 18:39:07 +0000 |
---|---|---|
committer | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 1996-11-15 18:39:07 +0000 |
commit | fbaa942278a722e6e0e8f3b07ada2e695707143d (patch) | |
tree | c29a33d2871f86521a59aa02ff8333ba9a4f2a63 /gcc/emit-rtl.c | |
parent | eb3659b0ff6633e2d966e6824508e0e2c082ac23 (diff) | |
download | gcc-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.c | 21 |
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)); } |