[Bug tree-optimization/93098] New: [10 Regression] ICE with negative shifter

pinskia at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Sun Dec 29 19:39:00 GMT 2019


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

            Bug ID: 93098
           Summary: [10 Regression] ICE with negative shifter
           Product: gcc
           Version: 10.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: pinskia at gcc dot gnu.org
  Target Milestone: ---

Even though it is undefined code, we should not ICE on this code.
Try with -O2:
typedef unsigned long long uint64_t;
   int popcount64c_1 (uint64_t x)
   {
     x -= (x >> -1) & 0x5555555555555555ULL;
     x = (x & 0x3333333333333333ULL) + ((x >> 2) & 0x3333333333333333ULL);
     x = (x + (x >> 4)) & 0x0f0f0f0f0f0f0f0fULL;
     return (x * 0x0101010101010101ULL) >> 56;
   }

Found this via inspection of match.pd after I was working on something else and
had the testcase for PR 50193 fails.


More information about the Gcc-bugs mailing list