This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Optimization of offset computations
- To: rth at cygnus dot com
- Subject: Re: Optimization of offset computations
- From: kenner at vlsi1 dot ultra dot nyu dot edu (Richard Kenner)
- Date: Tue, 30 Nov 99 06:53:21 EST
- Cc: gcc-patches at gcc dot gnu dot org
> > unsigned int a = 65536;
> > b = (a * 65536) / 8;
> > b = (a * 8192);
>
> Sure, but don't both expressions overflow the same way?
Absolutely not.
To 32 bits, the first is 0x1_0000_0000 = 0 / 8 = 0,
whereas the second is 0x2000_0000.
Oops! Of course ...
I'm not sure what to do here. sizetype is normally unsigned, so
restricting this optimization to signed isn't useful. And these are
quite important optimizations for size computations.
Does anybody have any ideas?