Commit 0e603223 by Roger Sayle Committed by Roger Sayle

re PR c/2454 (Test Program A0376972.c fails with gcc-20010320, works with gcc-2.95.3)


	PR c/2454
	* combine.c (nonzero_bits): LOAD_EXTEND_OP should only apply
	to SUBREGs of MEMs.  (num_sign_bit_copies): Likewise.

From-SVN: r55386
parent c5358a5d
2002-07-10 Roger Sayle <roger@eyesopen.com> 2002-07-10 Roger Sayle <roger@eyesopen.com>
PR c/2454
* combine.c (nonzero_bits): LOAD_EXTEND_OP should only apply
to SUBREGs of MEMs. (num_sign_bit_copies): Likewise.
2002-07-10 Roger Sayle <roger@eyesopen.com>
Zack Weinberg <zack@codesourcery.com> Zack Weinberg <zack@codesourcery.com>
* builtins.def: Make the argument types of abort and exit * builtins.def: Make the argument types of abort and exit
......
...@@ -8344,12 +8344,13 @@ nonzero_bits (x, mode) ...@@ -8344,12 +8344,13 @@ nonzero_bits (x, mode)
#if defined (WORD_REGISTER_OPERATIONS) && defined (LOAD_EXTEND_OP) #if defined (WORD_REGISTER_OPERATIONS) && defined (LOAD_EXTEND_OP)
/* If this is a typical RISC machine, we only have to worry /* If this is a typical RISC machine, we only have to worry
about the way loads are extended. */ about the way loads are extended. */
if (LOAD_EXTEND_OP (GET_MODE (SUBREG_REG (x))) == SIGN_EXTEND if ((LOAD_EXTEND_OP (GET_MODE (SUBREG_REG (x))) == SIGN_EXTEND
? (((nonzero ? (((nonzero
& (((unsigned HOST_WIDE_INT) 1 & (((unsigned HOST_WIDE_INT) 1
<< (GET_MODE_BITSIZE (GET_MODE (SUBREG_REG (x))) - 1)))) << (GET_MODE_BITSIZE (GET_MODE (SUBREG_REG (x))) - 1))))
!= 0)) != 0))
: LOAD_EXTEND_OP (GET_MODE (SUBREG_REG (x))) != ZERO_EXTEND) : LOAD_EXTEND_OP (GET_MODE (SUBREG_REG (x))) != ZERO_EXTEND)
|| GET_CODE (SUBREG_REG (x)) != MEM)
#endif #endif
{ {
/* On many CISC machines, accessing an object in a wider mode /* On many CISC machines, accessing an object in a wider mode
...@@ -8572,7 +8573,8 @@ num_sign_bit_copies (x, mode) ...@@ -8572,7 +8573,8 @@ num_sign_bit_copies (x, mode)
if ((GET_MODE_SIZE (GET_MODE (x)) if ((GET_MODE_SIZE (GET_MODE (x))
> GET_MODE_SIZE (GET_MODE (SUBREG_REG (x)))) > GET_MODE_SIZE (GET_MODE (SUBREG_REG (x))))
&& LOAD_EXTEND_OP (GET_MODE (SUBREG_REG (x))) == SIGN_EXTEND) && LOAD_EXTEND_OP (GET_MODE (SUBREG_REG (x))) == SIGN_EXTEND
&& GET_CODE (SUBREG_REG (x)) == MEM)
return num_sign_bit_copies (SUBREG_REG (x), mode); return num_sign_bit_copies (SUBREG_REG (x), mode);
#endif #endif
#endif #endif
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment