summaryrefslogtreecommitdiff
path: root/gcc/explow.c
diff options
context:
space:
mode:
authorsje <sje@138bc75d-0d04-0410-961f-82ee72b054a4>2002-07-16 16:07:13 +0000
committersje <sje@138bc75d-0d04-0410-961f-82ee72b054a4>2002-07-16 16:07:13 +0000
commit9fd73f310177bb1a205a61e48eb1da2ef461455c (patch)
tree2179a5c81855008c66bb0dfa9ca2d9b2f05490ec /gcc/explow.c
parentdc099f6cb82eb843963f1dbeb96ed064778fa85b (diff)
downloadgcc-9fd73f310177bb1a205a61e48eb1da2ef461455c.tar.gz
* gcc/explow.c (convert_memory_address): Remove special handling
when POINTERS_EXTEND_UNSIGNED < 0. * gcc/config/ia64.md (movsi_symbolic): New instruction for ILP32 mode. (movedi_symbolic): Fix typo. (load_fptr): Remove mode restriction so it works for SI and DI. (load_fptr_internal1): Ditto. (load_gprel): Ditto. (load_symptr_internal1): Ditto. (call_pic): Ditto. * gcc/config/ia64.c (call_operand): Modify mode check. (ia64_expand_load_address): Handle DI and SI addresses and symbols. (ia64_expand_move): Ditto. (ia64_assemble_integer): Handle SImode function pointers. (ia64_expand_fetch_and_op): Handle SImode mem addresses. (ia64_expand_op_and_fetch): Ditto. (ia64_expand_compare_and_swap): Ditto. (ia64_expand_lock_test_and_set): Ditto. (ia64_expand_lock_release): Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@55488 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/explow.c')
-rw-r--r--gcc/explow.c33
1 files changed, 12 insertions, 21 deletions
diff --git a/gcc/explow.c b/gcc/explow.c
index 8f0b52fef21..13a7b82be5b 100644
--- a/gcc/explow.c
+++ b/gcc/explow.c
@@ -363,36 +363,28 @@ convert_memory_address (to_mode, x)
return x;
case SUBREG:
- if (POINTERS_EXTEND_UNSIGNED >= 0
- && (SUBREG_PROMOTED_VAR_P (x) || REG_POINTER (SUBREG_REG (x)))
+ if ((SUBREG_PROMOTED_VAR_P (x) || REG_POINTER (SUBREG_REG (x)))
&& GET_MODE (SUBREG_REG (x)) == to_mode)
return SUBREG_REG (x);
break;
case LABEL_REF:
- if (POINTERS_EXTEND_UNSIGNED >= 0)
- {
- temp = gen_rtx_LABEL_REF (to_mode, XEXP (x, 0));
- LABEL_REF_NONLOCAL_P (temp) = LABEL_REF_NONLOCAL_P (x);
- return temp;
- }
+ temp = gen_rtx_LABEL_REF (to_mode, XEXP (x, 0));
+ LABEL_REF_NONLOCAL_P (temp) = LABEL_REF_NONLOCAL_P (x);
+ return temp;
break;
case SYMBOL_REF:
- if (POINTERS_EXTEND_UNSIGNED >= 0)
- {
- temp = gen_rtx_SYMBOL_REF (to_mode, XSTR (x, 0));
- SYMBOL_REF_FLAG (temp) = SYMBOL_REF_FLAG (x);
- CONSTANT_POOL_ADDRESS_P (temp) = CONSTANT_POOL_ADDRESS_P (x);
- STRING_POOL_ADDRESS_P (temp) = STRING_POOL_ADDRESS_P (x);
- return temp;
- }
+ temp = gen_rtx_SYMBOL_REF (to_mode, XSTR (x, 0));
+ SYMBOL_REF_FLAG (temp) = SYMBOL_REF_FLAG (x);
+ CONSTANT_POOL_ADDRESS_P (temp) = CONSTANT_POOL_ADDRESS_P (x);
+ STRING_POOL_ADDRESS_P (temp) = STRING_POOL_ADDRESS_P (x);
+ return temp;
break;
case CONST:
- if (POINTERS_EXTEND_UNSIGNED >= 0)
- return gen_rtx_CONST (to_mode,
- convert_memory_address (to_mode, XEXP (x, 0)));
+ return gen_rtx_CONST (to_mode,
+ convert_memory_address (to_mode, XEXP (x, 0)));
break;
case PLUS:
@@ -401,8 +393,7 @@ convert_memory_address (to_mode, x)
permute the conversion and addition operation. We can always safely
permute them if we are making the address narrower. In addition,
always permute the operations if this is a constant. */
- if (POINTERS_EXTEND_UNSIGNED >= 0
- && (GET_MODE_SIZE (to_mode) < GET_MODE_SIZE (from_mode)
+ if ((GET_MODE_SIZE (to_mode) < GET_MODE_SIZE (from_mode)
|| (GET_CODE (x) == PLUS && GET_CODE (XEXP (x, 1)) == CONST_INT
&& (INTVAL (XEXP (x, 1)) + 20000 < 40000
|| CONSTANT_P (XEXP (x, 0))))))