This is the mail archive of the gcc@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: GCC optimizes integer overflow: bug or feature?


On Tuesday 19 December 2006 20:05, Andrew Haley wrote:
> Denis Vlasenko writes:
>  > 
>  > I wrote this just a few days ago:
>  > 
>  >         do {
>  >                 int32_t v1 = v << 1;
>  >                 if (v < 0) v1 ^= mask;
>  >                 v = v1;
>  >                 printf("%10u: %08x\n", c++, v);
>  >         } while (v != 1);
>  > 
>  > I would become rather sad if this will stop compiling correctly.
> 
> I can understand the objections to do with "dusty deck" code that
> hasn't been looked at for aeons, but in the case of code that you
> wrote so recently, given that you understand the issue, why not simply
> use the standard idiom?

I want sane compiler. One in which N-bit integer variables stay exactly N-bit.
Without "magic" N+1 bit which is there "somethimes". a*2/2:
If I say "multiply by 2 and _after that_ divide by 2,
I meant that. Compiler can optimize it any way it wants,
as long as result is the same as unoptimized one.

Above: v is a signed entity. I expect (v < 0) to be equal to
"most significant bit is set". It's not about standards.
It's about sanity.
--
vda


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