On 01/12/2016 09:05 AM, Marek Polacek wrote:
On Tue, Jan 12, 2016 at 08:27:47AM -0500, Jason Merrill wrote:
Changing the diagnostic is OK, but cxx_eval_check_shift_p should return true
regardless of flag_permissive, so that SFINAE results follow the standard.
There's a complication, because if I keep returning true, we'll give a
compile-time error like this:
permissive-1.C:5:18: warning: left operand of shift expression ‘(-1 << 4)’ is
negative [-fpermissive]
enum A { AA = -1 << 4 }; // { dg-warning "operand of shift expression" "" {
target c++11 } }
permissive-1.C:5:21: error: enumerator value for ‘AA’ is not an integer
constant
enum A { AA = -1 << 4 }; // { dg-warning "operand of shift expression" "" {
target c++11 } }
So I suppose that wouldn't really help. :(
In that case, we need to return (!flag_permissive || ctx->quiet).
Jason