Re: Which pass optimizes if (x != x + 10) to if (1)?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Zhenqiang Chen <zhenqiang.chen@xxxxxxxxxx> writes:

> For the following case: -O0/-O2 can optimize if (x != x + 10) to if
> (1) at the beginning. But -Os can not. All options can optimize  if (x
> + 10 != x) to if (1).
>
> To reproduce it, check test.c.003t.original for the two commands.
>
> gcc test.c -fdump-tree-all -c -O0.
> gcc test.c -fdump-tree-all -c -Os.
>
> void test (int x, unsigned int y)
> {
>   if (x != x + 10)
>     ;
>   if (x + 10 != x)
>     ;
> }
>
> Which pass optimizes if (x != x + 10) to if (1)? Why is it not applied to -Os?

It's not a separate pass.  It's code in fold-const.c.

I don't know why -Os makes a difference here.  It does seem odd.  I
encourage you to investigate what is happening.

Ian


[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux