This is the mail archive of the gcc-bugs@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]

Re: Right-shift bug in egcs-2.91.66



On Friday, May 11, 2001, at 10:06  AM, Timur Tabi wrote:
> Now, I received a reply that says that "test >> 32" is undefined:
>
> Per "The C Programming Language 2nd edition" appendix A7.8
> Shift operators
> "The result is undefined if the right operand is negative, or greater
> than or equal to the number of bits in the left expression's type."
>
> Well, this is stupid.  Dividing by zero is undefined because 
> mathematically
> there are an infinite number of answers.  But the above can easily be 
> defined.
> Shifting by equal or more than the number of bits in the operand 
> results in zero.
> It's very simple.
>
> (IMHO, shifting by a negative number is equal to shifting in the 
> opposite
> direction by the positive, but I can understand why this might not be
> implemented).

If you have a problem with the language definition, you should take it 
up with the C standards committee, not with us.  But to get an idea what 
they might say, consider what the generated code for (X>>Y) would look 
like under your proposal.



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