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) }; ^