aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1992-12-27 06:52:59 -0500
committerRichard Kenner <kenner@gcc.gnu.org>1992-12-27 06:52:59 -0500
commitb851ea098ed463f18e1534b8295ef666f6c7916d (patch)
treeb3cbd63787aa4d0b8049517755f803e5ab0de3f8
parent818b11b942756b6af4e2dd01e2893e224076d40c (diff)
downloadgcc-b851ea098ed463f18e1534b8295ef666f6c7916d.zip
gcc-b851ea098ed463f18e1534b8295ef666f6c7916d.tar.gz
gcc-b851ea098ed463f18e1534b8295ef666f6c7916d.tar.bz2
(copy_rtx_if_shared): A CONST can be shared if it contains a
SYBOL_REF. From-SVN: r2923
-rw-r--r--gcc/emit-rtl.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c
index 1335308..8291da1 100644
--- a/gcc/emit-rtl.c
+++ b/gcc/emit-rtl.c
@@ -1267,6 +1267,15 @@ copy_rtx_if_shared (orig)
/* SCRATCH must be shared because they represent distinct values. */
return x;
+ case CONST:
+ /* CONST can be shared if it contains a SYMBOL_REF. If it contains
+ a LABEL_REF, it isn't sharable. */
+ if (GET_CODE (XEXP (x, 0)) == PLUS
+ && GET_CODE (XEXP (XEXP (x, 0), 0)) == SYMBOL_REF
+ && GET_CODE (XEXP (XEXP (x, 0), 1)) == CONST_INT)
+ return x;
+ break;
+
case INSN:
case JUMP_INSN:
case CALL_INSN: