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

            Bug ID: 115864
           Summary: right shift being optimised out incorrectly
           Product: gcc
           Version: 14.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: notzed at gmail dot com
  Target Milestone: ---

Created attachment 58628
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=58628&action=edit
minimal example

I have some code that performs some calculations then checks the high bit using
a shift or sign test.  In both cases the test is being optimised away despite
the high bit being set.

Using -fdump-tree-all it looks like it's removed at the step
'test.c.042t.evrp'.

Compiling with -Og or -O0 gives the expected result, any others do not.  Also
tested with gcc 13.2.1.

Output of test.c with -Os (or higher), amd64 systems.

 m = fffe0001
 m >> 30 00000003
 m >> 31 00000000
 m < 0 ? 0

Reply via email to