O2 and Overflow

Andrew Pinski pinskia@gmail.com
Fri Apr 23 17:45:00 GMT 2010



Sent from my iPhone

On Apr 23, 2010, at 10:25 AM, Heinz Riener <hriener@student.tugraz.at>  
wrote:

> Dear all,
>
> I'm using the native GCC version[1] of my GNU/Linux distribution.  I  
> wonder whether GCC's optimization behavior is in the following case  
> correct.  Consider the following two programs:
>
> (1)
> int test(int n) {
>  if (n > 0)
>    return 1;
>  return 0;
> }
>
> (2)
> int test(int n) {
>  if (2*n > 0)
>    return 1;
>  return 0;
> }
>
> After compiling both with the flags '-c -O2 -pedantic -Wall', they  
> result in the same object file.  I expected the object files to be  
> different. (The second program may overflow, the first program does  
> not.)  Please, point me to the right direction.

Signed interger overflow is undefined. Use -fwrapv or -fno-strict- 
overflow if you want gcc to behave as signed interger overflow being  
defined.

>
> [1]: gcc (GCC) 4.4.3 20100316 (prerelease)
>
> Thanks,
> Heinz



More information about the Gcc mailing list