From: Alexandre Oliva Date: Thu, 12 Apr 2001 05:25:55 +0000 (+0000) Subject: recog.c (general_operand, [...]): Require CONST_INTs to be sign-extended values for... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=c033e268c56e3ea1aac609bae6de5501881d1632;p=gcc.git recog.c (general_operand, [...]): Require CONST_INTs to be sign-extended values for their modes. * recog.c (general_operand, immediate_operand, nonmemory_operand): Require CONST_INTs to be sign-extended values for their modes. From-SVN: r41286 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 83ec61933ce..20cf366553d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2001-04-12 Alexandre Oliva + + * recog.c (general_operand, immediate_operand, + nonmemory_operand): Require CONST_INTs to be sign-extended + values for their modes. + 2001-04-12 Alexandre Oliva * expmed.c (store_bit_field): Truncate CONST_INTs. diff --git a/gcc/recog.c b/gcc/recog.c index bbecd5b719e..1c9fdf90e6e 100644 --- a/gcc/recog.c +++ b/gcc/recog.c @@ -1114,6 +1114,10 @@ general_operand (op, mode) && GET_MODE_CLASS (mode) != MODE_PARTIAL_INT) return 0; + if (GET_CODE (op) == CONST_INT + && trunc_int_for_mode (INTVAL (op), mode) != INTVAL (op)) + return 0; + if (CONSTANT_P (op)) return ((GET_MODE (op) == VOIDmode || GET_MODE (op) == mode || mode == VOIDmode) @@ -1290,6 +1294,10 @@ immediate_operand (op, mode) && GET_MODE_CLASS (mode) != MODE_PARTIAL_INT) return 0; + if (GET_CODE (op) == CONST_INT + && trunc_int_for_mode (INTVAL (op), mode) != INTVAL (op)) + return 0; + /* Accept CONSTANT_P_RTX, since it will be gone by CSE1 and result in 0/1. It seems a safe assumption that this is in range for everyone. */ @@ -1361,6 +1369,10 @@ nonmemory_operand (op, mode) && GET_MODE_CLASS (mode) != MODE_PARTIAL_INT) return 0; + if (GET_CODE (op) == CONST_INT + && trunc_int_for_mode (INTVAL (op), mode) != INTVAL (op)) + return 0; + return ((GET_MODE (op) == VOIDmode || GET_MODE (op) == mode || mode == VOIDmode) #ifdef LEGITIMATE_PIC_OPERAND_P