This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [SPARC] Fix PR target/60941


On Sat, Apr 26, 2014 at 03:30:25PM +0200, Eric Botcazou wrote:
> > > Not clear to me, (2U << i) should be zero if the shift count is masked.
> > 
> > 2U << 31 is undefined behavior on those targets.
> 
> Precisely not, or else we are not talking about the same notion of masking.

Eh, C99, 6.5.7/3:
"If the value of the right operand is negative or is
greater than or equal to the width of the promoted left operand, the
behavior is undefined."

So, if you have int16 target, where unsigned int is 16-bit and UINT_MAX 65535,
then shift count must be >= 0 and < 16, therefore, 2U << 31 is undefined
behavior.

	Jakub


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]