diff options
author | Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> | 2004-09-24 16:36:28 +0200 |
---|---|---|
committer | Zdenek Dvorak <rakdver@gcc.gnu.org> | 2004-09-24 14:36:28 +0000 |
commit | 30d3fc60ed43590b2f785fbc9374d2c7e16b7659 (patch) | |
tree | 9abc153149c4054c3b0b6bc39509ca8dcdc00afc /gcc/loop-doloop.c | |
parent | 5cf447dbf18327c71263f9afff56905d2a86dc0d (diff) | |
download | gcc-30d3fc60ed43590b2f785fbc9374d2c7e16b7659.zip gcc-30d3fc60ed43590b2f785fbc9374d2c7e16b7659.tar.gz gcc-30d3fc60ed43590b2f785fbc9374d2c7e16b7659.tar.bz2 |
re PR rtl-optimization/17625 (ICE on legal (doloop creates shared RTL))
PR rtl-optimization/17625
* loop-doloop.c (doloop_modify): Unshare rtl before emitting it.
From-SVN: r88038
Diffstat (limited to 'gcc/loop-doloop.c')
-rw-r--r-- | gcc/loop-doloop.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/gcc/loop-doloop.c b/gcc/loop-doloop.c index e463eea..7b4f4d4 100644 --- a/gcc/loop-doloop.c +++ b/gcc/loop-doloop.c @@ -292,7 +292,7 @@ doloop_modify (struct loop *loop, struct niter_desc *desc, if (GET_CODE (counter_reg) == PLUS) counter_reg = XEXP (counter_reg, 0); - count = desc->niter_expr; + count = copy_rtx (desc->niter_expr); increment_count = false; switch (GET_CODE (condition)) { @@ -345,7 +345,7 @@ doloop_modify (struct loop *loop, struct niter_desc *desc, if (desc->noloop_assumptions) { - rtx ass = desc->noloop_assumptions; + rtx ass = copy_rtx (desc->noloop_assumptions); basic_block preheader = loop_preheader_edge (loop)->src; basic_block set_zero = loop_split_edge_with (loop_preheader_edge (loop), NULL_RTX); |