https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98956

Navid Rahimi <navidrahimi at microsoft dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |navidrahimi at microsoft dot 
com

--- Comment #3 from Navid Rahimi <navidrahimi at microsoft dot com> ---
I am sending a patch for this:

/* cmp : ==, != */
/* ((B0 << CST) cmp 0) -> B0 cmp 0 */
(for cmp (eq ne)
 (simplify
  (cmp (lshift (convert @0) INTEGER_CST@1) integer_zerop@2)
  (if (TREE_CODE (TREE_TYPE (@0)) == BOOLEAN_TYPE) (cmp @0 @2))))


This does not apply to other arithmetic operations (at least it is not
verifiable). and for cases that it does apply to other arithmetic operators,
GCC already produces optimized code. You can play with the codegen I link
below:

Codegen:
https://compiler-explorer.com/z/nj4PTrecW

Proof:
https://alive2.llvm.org/ce/z/jyJAoS
  • [Bug tree-optimization/98956... navidrahimi at microsoft dot com via Gcc-bugs

Reply via email to