Commit 053ee6a7 by Martin Liska Committed by Martin Liska

Fix fallthrough attribute ignorance w/ -fsanitize=address (PR sanitizer/82792).

2017-11-08  Martin Liska  <mliska@suse.cz>

	PR sanitizer/82792
	* gimplify.c (expand_FALLTHROUGH_r): Skip IFN_ASAN_MARK.
2017-11-08  Martin Liska  <mliska@suse.cz>

	PR sanitizer/82792
	* g++.dg/asan/pr82792.C: New test.

From-SVN: r254519
parent 5925290f
2017-11-08 Martin Liska <mliska@suse.cz>
PR sanitizer/82792
* gimplify.c (expand_FALLTHROUGH_r): Skip IFN_ASAN_MARK.
2017-11-07 Eric Botcazou <ebotcazou@adacore.com>
* gimple-pretty-print.c (dump_profile): Return "" instead of NULL.
......@@ -2223,7 +2223,8 @@ expand_FALLTHROUGH_r (gimple_stmt_iterator *gsi_p, bool *handled_ops_p,
while (!gsi_end_p (gsi2))
{
stmt = gsi_stmt (gsi2);
if (gimple_code (stmt) == GIMPLE_LABEL)
enum gimple_code gc = gimple_code (stmt);
if (gc == GIMPLE_LABEL)
{
tree label = gimple_label_label (as_a <glabel *> (stmt));
if (gimple_has_location (stmt) && DECL_ARTIFICIAL (label))
......@@ -2232,8 +2233,11 @@ expand_FALLTHROUGH_r (gimple_stmt_iterator *gsi_p, bool *handled_ops_p,
break;
}
}
else if (gc == GIMPLE_CALL
&& gimple_call_internal_p (stmt, IFN_ASAN_MARK))
;
else
/* Something other than a label. That's not expected. */
/* Something other is not expected. */
break;
gsi_next (&gsi2);
}
......
2017-11-08 Martin Liska <mliska@suse.cz>
PR sanitizer/82792
* g++.dg/asan/pr82792.C: New test.
2017-11-07 Jakub Jelinek <jakub@redhat.com>
PR target/82855
......
/* PR sanitizer/82792 */
/* { dg-do compile } */
/* { dg-options "-fsanitize=address" } */
extern int
test (int i, int j)
{
long c;
(c) = 1;
switch (i)
{
case 1:
if (j)
{
c = 1;
}
goto default_case;
case 2:
{
if (j)
{
c = 0;
}
}
__attribute ((fallthrough));
default_case:
default:
c = 0;
break;
}
return 0;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment