------- Comment #1 from segher at kernel dot crashing dot org  2008-02-23 19:51 
-------
(In reply to comment #0)
> The following rule is not handled by GCC
> 
> (a & x) || (a & y) ===>  a & (x | y)

Perhaps that is because those two expressions aren't equivalent?

But, confirmed, assuming you meant to say that

  int bla(int a, int x, int y)
  {
          return (a & x) || (a & y);
  }

isn't transformed to the equivalent of

  int blabla(int a, int x, int y)
  {
          return !!(a & (x | y));
  }

This _is_ handled for constant x, y though.


Segher


-- 

segher at kernel dot crashing dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |segher at kernel dot
                   |                            |crashing dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35306

Reply via email to