re PR c++/91024 (-Wimplicit-fallthrough is confused by likely/unlikely attributes)

PR c++/91024
	* gimplify.c (collect_fallthrough_labels): Ignore GIMPLE_PREDICT
	statements.

	* g++.dg/warn/Wimplicit-fallthrough-4.C: New test.

From-SVN: r272764
This commit is contained in:
Jakub Jelinek 2019-06-27 23:25:56 +02:00 committed by Jakub Jelinek
parent 12213acba9
commit 95bb6e7a56
4 changed files with 31 additions and 0 deletions

View File

@ -1,5 +1,9 @@
2019-06-27 Jakub Jelinek <jakub@redhat.com>
PR c++/91024
* gimplify.c (collect_fallthrough_labels): Ignore GIMPLE_PREDICT
statements.
PR tree-optimization/91010
* tree-vect-stmts.c (scan_operand_equal_p): If offset1 == offset2,
return true. Otherwise, don't call operand_equal_p if offset1 or

View File

@ -2120,6 +2120,8 @@ collect_fallthrough_labels (gimple_stmt_iterator *gsi_p,
}
else if (gimple_call_internal_p (gsi_stmt (*gsi_p), IFN_ASAN_MARK))
;
else if (gimple_code (gsi_stmt (*gsi_p)) == GIMPLE_PREDICT)
;
else if (!is_gimple_debug (gsi_stmt (*gsi_p)))
prev = gsi_stmt (*gsi_p);
gsi_next (gsi_p);

View File

@ -1,5 +1,8 @@
2019-06-27 Jakub Jelinek <jakub@redhat.com>
PR c++/91024
* g++.dg/warn/Wimplicit-fallthrough-4.C: New test.
PR tree-optimization/91010
* g++.dg/vect/simd-10.cc: New test.

View File

@ -0,0 +1,22 @@
// PR c++/91024
// { dg-do compile { target c++11 } }
// { dg-options "-Wimplicit-fallthrough" }
int
foo (char c)
{
int result = 0;
switch (c)
{
case 'O':
case 'K':
return result;
[[unlikely]] case 'X': // { dg-bogus "this statement may fall through" }
case 'x': // { dg-bogus "here" }
return result;
default:
break;
}
return result;
}