summaryrefslogtreecommitdiff
path: root/gcc/config/m32c/m32c.c
diff options
context:
space:
mode:
authorrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>2012-01-24 19:06:38 +0000
committerrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>2012-01-24 19:06:38 +0000
commit402f6a9e6b225e401135286881427884dad42680 (patch)
tree0437cd6825d81c4a05099372f1111220a0a2e1ba /gcc/config/m32c/m32c.c
parent376a287d5002e5e9a5ed836fd2104d6f0292a09b (diff)
downloadgcc-402f6a9e6b225e401135286881427884dad42680.tar.gz
gcc/
* doc/rtl.texi (MEM_IN_STRUCT_P, MEM_SCALAR_P): Delete. (in_struct, return_val): Remove MEM documentation. * rtl.h (rtx_def): Remove MEM meanings from in_struct and return_val. (MEM_IN_STRUCT_P, MEM_SCALAR_P): Delete. (MEM_COPY_ATTRIBUTES): Remove references to MEM_IN_STRUCT_P and MEM_SCALAR. * emit-rtl.c (set_mem_attributes_minus_bitpos): Likewise. * cfgexpand.c (add_alias_set_conflicts): Likewise. * expr.c (store_field): Likewise. * function.c (assign_stack_temp_for_type): Likewise. * ifcvt.c (noce_try_cmove_arith): Likewise. * reload1.c (reload): Likewise. * config/alpha/alpha.c (alpha_set_memflags_1): Likewise. (alpha_set_memflags): Likewise. * config/m32c/m32c.c (m32c_immd_dbl_mov): Nullify. gcc/testsuite/ * gcc.dg/memcpy-4.c: Don't expect /s on MEMs. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@183486 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/m32c/m32c.c')
-rw-r--r--gcc/config/m32c/m32c.c90
1 files changed, 3 insertions, 87 deletions
diff --git a/gcc/config/m32c/m32c.c b/gcc/config/m32c/m32c.c
index d86a618b028..57586474d9c 100644
--- a/gcc/config/m32c/m32c.c
+++ b/gcc/config/m32c/m32c.c
@@ -3475,95 +3475,11 @@ m32c_mov_ok (rtx * operands, enum machine_mode mode ATTRIBUTE_UNUSED)
for moving an immediate double data to a double data type variable
location, can be combined into single SImode mov instruction. */
bool
-m32c_immd_dbl_mov (rtx * operands,
+m32c_immd_dbl_mov (rtx * operands ATTRIBUTE_UNUSED,
enum machine_mode mode ATTRIBUTE_UNUSED)
{
- int flag = 0, okflag = 0, offset1 = 0, offset2 = 0, offsetsign = 0;
- const char *str1;
- const char *str2;
-
- if (GET_CODE (XEXP (operands[0], 0)) == SYMBOL_REF
- && MEM_SCALAR_P (operands[0])
- && !MEM_IN_STRUCT_P (operands[0])
- && GET_CODE (XEXP (operands[2], 0)) == CONST
- && GET_CODE (XEXP (XEXP (operands[2], 0), 0)) == PLUS
- && GET_CODE (XEXP (XEXP (XEXP (operands[2], 0), 0), 0)) == SYMBOL_REF
- && GET_CODE (XEXP (XEXP (XEXP (operands[2], 0), 0), 1)) == CONST_INT
- && MEM_SCALAR_P (operands[2])
- && !MEM_IN_STRUCT_P (operands[2]))
- flag = 1;
-
- else if (GET_CODE (XEXP (operands[0], 0)) == CONST
- && GET_CODE (XEXP (XEXP (operands[0], 0), 0)) == PLUS
- && GET_CODE (XEXP (XEXP (XEXP (operands[0], 0), 0), 0)) == SYMBOL_REF
- && MEM_SCALAR_P (operands[0])
- && !MEM_IN_STRUCT_P (operands[0])
- && !(INTVAL (XEXP (XEXP (XEXP (operands[0], 0), 0), 1)) %4)
- && GET_CODE (XEXP (operands[2], 0)) == CONST
- && GET_CODE (XEXP (XEXP (operands[2], 0), 0)) == PLUS
- && GET_CODE (XEXP (XEXP (XEXP (operands[2], 0), 0), 0)) == SYMBOL_REF
- && MEM_SCALAR_P (operands[2])
- && !MEM_IN_STRUCT_P (operands[2]))
- flag = 2;
-
- else if (GET_CODE (XEXP (operands[0], 0)) == PLUS
- && GET_CODE (XEXP (XEXP (operands[0], 0), 0)) == REG
- && REGNO (XEXP (XEXP (operands[0], 0), 0)) == FB_REGNO
- && GET_CODE (XEXP (XEXP (operands[0], 0), 1)) == CONST_INT
- && MEM_SCALAR_P (operands[0])
- && !MEM_IN_STRUCT_P (operands[0])
- && !(INTVAL (XEXP (XEXP (operands[0], 0), 1)) %4)
- && REGNO (XEXP (XEXP (operands[2], 0), 0)) == FB_REGNO
- && GET_CODE (XEXP (XEXP (operands[2], 0), 1)) == CONST_INT
- && MEM_SCALAR_P (operands[2])
- && !MEM_IN_STRUCT_P (operands[2]))
- flag = 3;
-
- else
- return false;
-
- switch (flag)
- {
- case 1:
- str1 = XSTR (XEXP (operands[0], 0), 0);
- str2 = XSTR (XEXP (XEXP (XEXP (operands[2], 0), 0), 0), 0);
- if (strcmp (str1, str2) == 0)
- okflag = 1;
- else
- okflag = 0;
- break;
- case 2:
- str1 = XSTR (XEXP (XEXP (XEXP (operands[0], 0), 0), 0), 0);
- str2 = XSTR (XEXP (XEXP (XEXP (operands[2], 0), 0), 0), 0);
- if (strcmp(str1,str2) == 0)
- okflag = 1;
- else
- okflag = 0;
- break;
- case 3:
- offset1 = INTVAL (XEXP (XEXP (operands[0], 0), 1));
- offset2 = INTVAL (XEXP (XEXP (operands[2], 0), 1));
- offsetsign = offset1 >> ((sizeof (offset1) * 8) -1);
- if (((offset2-offset1) == 2) && offsetsign != 0)
- okflag = 1;
- else
- okflag = 0;
- break;
- default:
- okflag = 0;
- }
-
- if (okflag == 1)
- {
- HOST_WIDE_INT val;
- operands[4] = gen_rtx_MEM (SImode, XEXP (operands[0], 0));
-
- val = (INTVAL (operands[3]) << 16) + (INTVAL (operands[1]) & 0xFFFF);
- operands[5] = gen_rtx_CONST_INT (VOIDmode, val);
-
- return true;
- }
-
+ /* ??? This relied on the now-defunct MEM_SCALAR and MEM_IN_STRUCT_P
+ flags. */
return false;
}