From cf526dcc5c28c03eb46440208663802b4f4bc171 Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Sun, 27 Dec 1992 06:53:32 -0500 Subject: [PATCH] (copy_rtx): A CONST can be shared if it contains a SYMBOL_REF. A SCRATCH must be shared. A MEM may be shared if it is at a constant address. From-SVN: r2924 --- gcc/rtl.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/gcc/rtl.c b/gcc/rtl.c index 9bb704c4fce..8017df1b2c8 100644 --- a/gcc/rtl.c +++ b/gcc/rtl.c @@ -264,7 +264,23 @@ copy_rtx (orig) case CODE_LABEL: case PC: case CC0: + case SCRATCH: + /* SCRATCH must be shared because they represent distinct values. */ return orig; + + 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 (orig, 0)) == PLUS + && GET_CODE (XEXP (XEXP (orig, 0), 0)) == SYMBOL_REF + && GET_CODE (XEXP (XEXP (orig, 0), 1)) == CONST_INT) + return orig; + break; + + case MEM: + if (CONSTANT_ADDRESS_P (XEXP (orig, 0))) + return orig; + break; } copy = rtx_alloc (code); -- 2.30.2