On Wed, 2017-11-15 at 08:03 -0500, Nathan Sidwell wrote:
> g++.dg/lambda/lambda-switch.C Has recently regressed.  

g++.dg/cpp0x/lambda/lambda-switch.C

> It appears the 
> location of a warning message has moved.
> 
>         l = []()              // { dg-warning "statement will never
> be executed" }
>           {
>           case 3:             // { dg-error "case" }
>             break;            // { dg-error "break" }
>           };  <--- warning now here
> 
> We seem to be diagnosing the last line of the statement, not the
> first. 
> That seems not a useful.
> 
> I've not investigated what patch may have caused this, on the chance 
> someone might already know?
> 
> nathan

The warning was added in r236597 (aka
1398da0f786e120bb0b407e84f412aa9fc6d80ee):

+2016-05-23  Marek Polacek  <pola...@redhat.com>
+
+       PR c/49859
+       * common.opt (Wswitch-unreachable): New option.
+       * doc/invoke.texi: Document -Wswitch-unreachable.
+       * gimplify.c (gimplify_switch_expr): Implement the -Wswitch-unreachable
+       warning.

which had it at there (23:7).

r244705 (aka 3ef7eab185e1463c7dbfa2a8d1af5d0120cf9f76) moved the
warning from 23:7 up to the "[] ()" at 19:6 in:

+2017-01-20  Marek Polacek  <pola...@redhat.com>
+
+       PR c/64279
[...snip...]
+       * g++.dg/cpp0x/lambda/lambda-switch.C: Move dg-warning.

I tried it with some working copies I have to hand:
- works for me with r254387 (2017-11-03)
- fails for me with r254700 (2017-11-13)

so hopefully that helps track it down.

Dave

Reply via email to