diff options
author | Martin Liska <mliska@suse.cz> | 2017-06-19 15:27:48 +0200 |
---|---|---|
committer | Martin Liska <marxin@gcc.gnu.org> | 2017-06-19 13:27:48 +0000 |
commit | a6e5212a77e34682cfb591ed80e7166eaa895365 (patch) | |
tree | 306ee35916c9118ad658594b931d61933751b679 /gcc/gimplify.c | |
parent | 1a1e0df1cd646b81e35dd65523c3ae484d29fbf6 (diff) | |
download | gcc-a6e5212a77e34682cfb591ed80e7166eaa895365.zip gcc-a6e5212a77e34682cfb591ed80e7166eaa895365.tar.gz gcc-a6e5212a77e34682cfb591ed80e7166eaa895365.tar.bz2 |
Initialize live_switch_vars for SWITCH_BODY == STATEMENT_LIST (PR sanitizer/80879).
2017-06-19 Martin Liska <mliska@suse.cz>
PR sanitizer/80879
* gimplify.c (gimplify_switch_expr):
Initialize live_switch_vars for SWITCH_BODY == STATEMENT_LIST.
2017-06-19 Martin Liska <mliska@suse.cz>
PR sanitizer/80879
* gcc.dg/asan/use-after-scope-switch-4.c: New test.
From-SVN: r249368
Diffstat (limited to 'gcc/gimplify.c')
-rw-r--r-- | gcc/gimplify.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/gimplify.c b/gcc/gimplify.c index 9af95a2..cf82f95 100644 --- a/gcc/gimplify.c +++ b/gcc/gimplify.c @@ -2279,7 +2279,8 @@ gimplify_switch_expr (tree *expr_p, gimple_seq *pre_p) /* Do not create live_switch_vars if SWITCH_BODY is not a BIND_EXPR. */ saved_live_switch_vars = gimplify_ctxp->live_switch_vars; - if (TREE_CODE (SWITCH_BODY (switch_expr)) == BIND_EXPR) + tree_code body_type = TREE_CODE (SWITCH_BODY (switch_expr)); + if (body_type == BIND_EXPR || body_type == STATEMENT_LIST) gimplify_ctxp->live_switch_vars = new hash_set<tree> (4); else gimplify_ctxp->live_switch_vars = NULL; |