aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Stallman <rms@gnu.org>1992-03-24 19:01:29 +0000
committerRichard Stallman <rms@gnu.org>1992-03-24 19:01:29 +0000
commit6461be142d87b3c7f15287df760d89595c752876 (patch)
tree16dd7ea934cf6ec56a3e2f68a593f00e08cddccb
parent95f2ba07f8004717648cff209e6624316b07785a (diff)
downloadgcc-6461be142d87b3c7f15287df760d89595c752876.zip
gcc-6461be142d87b3c7f15287df760d89595c752876.tar.gz
gcc-6461be142d87b3c7f15287df760d89595c752876.tar.bz2
*** empty log message ***
From-SVN: r582
-rw-r--r--gcc/function.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/gcc/function.c b/gcc/function.c
index d250d5b..819245d 100644
--- a/gcc/function.c
+++ b/gcc/function.c
@@ -2210,9 +2210,17 @@ instantiate_virtual_regs_1 (loc, object, extra_insns)
Note that we cannot pass X as the object in the recursive call
since the insn being processed may not allow all valid
- addresses. */
+ addresses. However, if we were not passed on object, we can
+ only modify X without copying it if X will have a valid
+ address.
- if (instantiate_virtual_regs_1 (&XEXP (x, 0), object, 0))
+ ??? Also note that this can still lose if OBJECT is an insn that
+ has less restrictions on an address that some other insn.
+ In that case, we will modify the shared address. This case
+ doesn't seem very likely, though. */
+
+ if (instantiate_virtual_regs_1 (&XEXP (x, 0),
+ object ? object : x, 0))
return 1;
/* Otherwise make a copy and process that copy. We copy the entire