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

            Bug ID: 68979
           Summary: [6 Regression] error: left operand of shift expression
                    ‘(-1 << 4)’ is negative
           Product: gcc
           Version: 6.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: trippels at gcc dot gnu.org
  Target Milestone: ---

markus@x4 tmp % cat enum.ii
enum A { bit_mask = ~(-1 << 4) };

markus@x4 tmp % /usr/x86_64-pc-linux-gnu/gcc-bin/4.9.3/g++ -std=c++14 -Wall
-Wextra -c enum.ii
markus@x4 tmp % /usr/x86_64-pc-linux-gnu/gcc-bin/5.3.1/g++ -std=c++14 -Wall
-Wextra -c enum.ii
markus@x4 tmp % clang++ -std=c++14 -Wall -Wextra -c enum.ii
markus@x4 tmp % icpc -std=c++14 -Wall -Wextra -c enum.ii
markus@x4 tmp % g++ -Wall -Wextra -c enum.ii
enum.ii:1:29: warning: left shift of negative value [-Wshift-negative-value]
 enum A { bit_mask = ~(-1 << 4) };
                             ^

enum.ii:1:26: error: left operand of shift expression ‘(-1 << 4)’ is negative
 enum A { bit_mask = ~(-1 << 4) };
                      ~~~~^~~~~

enum.ii:1:30: error: enumerator value for ‘bit_mask’ is not an integer constant
 enum A { bit_mask = ~(-1 << 4) };
                              ^

Reply via email to