mirror of git://gcc.gnu.org/git/gcc.git
re PR c++/77803 (Bogus implicit-fallthrough warning)
PR c++/77803 * gimplify.c (last_stmt_in_scope): Add check for FALLTHROUGH (). * g++.dg/warn/Wimplicit-fallthrough-1.C: New test. From-SVN: r240861
This commit is contained in:
parent
7a18d752e7
commit
d4bd46463c
|
|
@ -1,3 +1,8 @@
|
||||||
|
2016-10-07 Marek Polacek <polacek@redhat.com>
|
||||||
|
|
||||||
|
PR c++/77803
|
||||||
|
* gimplify.c (last_stmt_in_scope): Add check for FALLTHROUGH ().
|
||||||
|
|
||||||
2016-10-07 Richard Biener <rguenther@suse.de>
|
2016-10-07 Richard Biener <rguenther@suse.de>
|
||||||
|
|
||||||
* bitmap.h: Document constraints on bitmap modification while
|
* bitmap.h: Document constraints on bitmap modification while
|
||||||
|
|
|
||||||
|
|
@ -1687,6 +1687,8 @@ last_stmt_in_scope (gimple *stmt)
|
||||||
stmt = gimple_seq_last_stmt (gimple_try_eval (try_stmt));
|
stmt = gimple_seq_last_stmt (gimple_try_eval (try_stmt));
|
||||||
gimple *last_eval = last_stmt_in_scope (stmt);
|
gimple *last_eval = last_stmt_in_scope (stmt);
|
||||||
if (gimple_stmt_may_fallthru (last_eval)
|
if (gimple_stmt_may_fallthru (last_eval)
|
||||||
|
&& (last_eval == NULL
|
||||||
|
|| !gimple_call_internal_p (last_eval, IFN_FALLTHROUGH))
|
||||||
&& gimple_try_kind (try_stmt) == GIMPLE_TRY_FINALLY)
|
&& gimple_try_kind (try_stmt) == GIMPLE_TRY_FINALLY)
|
||||||
{
|
{
|
||||||
stmt = gimple_seq_last_stmt (gimple_try_cleanup (try_stmt));
|
stmt = gimple_seq_last_stmt (gimple_try_cleanup (try_stmt));
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,8 @@
|
||||||
|
2016-10-07 Marek Polacek <polacek@redhat.com>
|
||||||
|
|
||||||
|
PR c++/77803
|
||||||
|
* g++.dg/warn/Wimplicit-fallthrough-1.C: New test.
|
||||||
|
|
||||||
2016-10-07 Jakub Jelinek <jakub@redhat.com>
|
2016-10-07 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
PR tree-optimization/77664
|
PR tree-optimization/77664
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
// PR c++/77803
|
||||||
|
// { dg-do compile { target c++11 } }
|
||||||
|
// { dg-options "-Wimplicit-fallthrough" }
|
||||||
|
|
||||||
|
struct A {};
|
||||||
|
int a;
|
||||||
|
|
||||||
|
void
|
||||||
|
fn1 ()
|
||||||
|
{
|
||||||
|
switch (0) {
|
||||||
|
case 0:
|
||||||
|
{
|
||||||
|
A b;
|
||||||
|
[[fallthrough]];
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
a = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
fn2 ()
|
||||||
|
{
|
||||||
|
switch (0) {
|
||||||
|
case 0:
|
||||||
|
{
|
||||||
|
A b; // { dg-warning "statement may fall through" }
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
a = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue