diff options
Diffstat (limited to 'gcc/rtlanal.c')
-rw-r--r-- | gcc/rtlanal.c | 26 |
1 files changed, 7 insertions, 19 deletions
diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c index 26f69b09300..73d3b08d940 100644 --- a/gcc/rtlanal.c +++ b/gcc/rtlanal.c @@ -39,18 +39,6 @@ along with GCC; see the file COPYING3. If not see #include "df.h" #include "tree.h" -/* Information about a subreg of a hard register. */ -struct subreg_info -{ - /* Offset of first hard register involved in the subreg. */ - int offset; - /* Number of hard registers involved in the subreg. */ - int nregs; - /* Whether this subreg can be represented as a hard reg with the new - mode. */ - bool representable_p; -}; - /* Forward declarations */ static void set_of_1 (rtx, const_rtx, void *); static bool covers_regno_p (const_rtx, unsigned int); @@ -58,9 +46,6 @@ static bool covers_regno_no_parallel_p (const_rtx, unsigned int); static int rtx_referenced_p_1 (rtx *, void *); static int computed_jump_p_1 (const_rtx); static void parms_set (rtx, const_rtx, void *); -static void subreg_get_info (unsigned int, enum machine_mode, - unsigned int, enum machine_mode, - struct subreg_info *); static unsigned HOST_WIDE_INT cached_nonzero_bits (const_rtx, enum machine_mode, const_rtx, enum machine_mode, @@ -3090,7 +3075,7 @@ subreg_lsb (const_rtx x) offset - The byte offset. ymode - The mode of a top level SUBREG (or what may become one). info - Pointer to structure to fill in. */ -static void +void subreg_get_info (unsigned int xregno, enum machine_mode xmode, unsigned int offset, enum machine_mode ymode, struct subreg_info *info) @@ -4061,7 +4046,8 @@ nonzero_bits1 (const_rtx x, enum machine_mode mode, const_rtx known_x, low-order bits by left shifts. */ if (GET_CODE (XEXP (x, 1)) == CONST_INT && INTVAL (XEXP (x, 1)) >= 0 - && INTVAL (XEXP (x, 1)) < HOST_BITS_PER_WIDE_INT) + && INTVAL (XEXP (x, 1)) < HOST_BITS_PER_WIDE_INT + && INTVAL (XEXP (x, 1)) < GET_MODE_BITSIZE (GET_MODE (x))) { enum machine_mode inner_mode = GET_MODE (x); unsigned int width = GET_MODE_BITSIZE (inner_mode); @@ -4542,7 +4528,8 @@ num_sign_bit_copies1 (const_rtx x, enum machine_mode mode, const_rtx known_x, num0 = cached_num_sign_bit_copies (XEXP (x, 0), mode, known_x, known_mode, known_ret); if (GET_CODE (XEXP (x, 1)) == CONST_INT - && INTVAL (XEXP (x, 1)) > 0) + && INTVAL (XEXP (x, 1)) > 0 + && INTVAL (XEXP (x, 1)) < GET_MODE_BITSIZE (GET_MODE (x))) num0 = MIN ((int) bitwidth, num0 + INTVAL (XEXP (x, 1))); return num0; @@ -4551,7 +4538,8 @@ num_sign_bit_copies1 (const_rtx x, enum machine_mode mode, const_rtx known_x, /* Left shifts destroy copies. */ if (GET_CODE (XEXP (x, 1)) != CONST_INT || INTVAL (XEXP (x, 1)) < 0 - || INTVAL (XEXP (x, 1)) >= (int) bitwidth) + || INTVAL (XEXP (x, 1)) >= (int) bitwidth + || INTVAL (XEXP (x, 1)) >= GET_MODE_BITSIZE (GET_MODE (x))) return 1; num0 = cached_num_sign_bit_copies (XEXP (x, 0), mode, |