View | Details | Return to bug 83565 | Differences between
and this patch

Collapse All | Expand All

(-)a/gcc/config/ia64/ia64.h (-1 / +1 lines)
Lines 1541-1547 do { \ Link Here
1541
/* Define this macro if operations between registers with integral mode smaller
1541
/* Define this macro if operations between registers with integral mode smaller
1542
   than a word are always performed on the entire register.  */
1542
   than a word are always performed on the entire register.  */
1543
1543
1544
#define WORD_REGISTER_OPERATIONS 1
1544
#define WORD_REGISTER_OPERATIONS -1
1545
1545
1546
/* Define this macro to be a C expression indicating when insns that read
1546
/* Define this macro to be a C expression indicating when insns that read
1547
   memory in MODE, an integral mode narrower than a word, set the bits outside
1547
   memory in MODE, an integral mode narrower than a word, set the bits outside
(-)a/gcc/rtlanal.c (-2 / +5 lines)
Lines 4743-4749 nonzero_bits1 (const_rtx x, scalar_int_mode mode, const_rtx known_x, Link Here
4743
	       || ((extend_op = load_extend_op (inner_mode)) == SIGN_EXTEND
4743
	       || ((extend_op = load_extend_op (inner_mode)) == SIGN_EXTEND
4744
		   ? val_signbit_known_set_p (inner_mode, nonzero)
4744
		   ? val_signbit_known_set_p (inner_mode, nonzero)
4745
		   : extend_op != ZERO_EXTEND)
4745
		   : extend_op != ZERO_EXTEND)
4746
	       || (!MEM_P (SUBREG_REG (x)) && !REG_P (SUBREG_REG (x))))
4746
	       || (!MEM_P (SUBREG_REG (x))
4747
		   && (!REG_P (SUBREG_REG (x))
4748
		       || WORD_REGISTER_OPERATIONS < 0)))
4747
	      && xmode_width > GET_MODE_PRECISION (inner_mode))
4749
	      && xmode_width > GET_MODE_PRECISION (inner_mode))
4748
	    nonzero |= (GET_MODE_MASK (xmode) & ~GET_MODE_MASK (inner_mode));
4750
	    nonzero |= (GET_MODE_MASK (xmode) & ~GET_MODE_MASK (inner_mode));
4749
	}
4751
	}
Lines 5071-5077 num_sign_bit_copies1 (const_rtx x, scalar_int_mode mode, const_rtx known_x, Link Here
5071
	  if (WORD_REGISTER_OPERATIONS
5073
	  if (WORD_REGISTER_OPERATIONS
5072
	      && load_extend_op (inner_mode) == SIGN_EXTEND
5074
	      && load_extend_op (inner_mode) == SIGN_EXTEND
5073
	      && paradoxical_subreg_p (x)
5075
	      && paradoxical_subreg_p (x)
5074
	      && (MEM_P (SUBREG_REG (x)) || REG_P (SUBREG_REG (x))))
5076
	      && (MEM_P (SUBREG_REG (x))
5077
		  || (REG_P (SUBREG_REG (x)) && WORD_REGISTER_OPERATIONS > 0)))
5075
	    return cached_num_sign_bit_copies (SUBREG_REG (x), mode,
5078
	    return cached_num_sign_bit_copies (SUBREG_REG (x), mode,
5076
					       known_x, known_mode, known_ret);
5079
					       known_x, known_mode, known_ret);
5077
	}
5080
	}

Return to bug 83565