From: Marek Polacek Date: Wed, 17 May 2017 09:59:20 +0000 (+0000) Subject: re PR sanitizer/80659 (-fsanitize=address evokes ICE in in gimplify_switch_expr) X-Git-Tag: upstream/12.2.0~39433 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=142473df8ea4f3ff7ebd480bf827bfb795da6861;p=platform%2Fupstream%2Fgcc.git re PR sanitizer/80659 (-fsanitize=address evokes ICE in in gimplify_switch_expr) PR sanitizer/80659 * c-decl.c (build_compound_literal): Set DECL_ARTIFICIAL and DECL_IGNORED_P even for non-static compound literals. * gcc.dg/asan/pr80659.c: New test. From-SVN: r248143 --- diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index e0c1e99..6862b53 100644 --- a/gcc/c/ChangeLog +++ b/gcc/c/ChangeLog @@ -1,3 +1,9 @@ +2017-05-17 Marek Polacek + + PR sanitizer/80659 + * c-decl.c (build_compound_literal): Set DECL_ARTIFICIAL and + DECL_IGNORED_P even for non-static compound literals. + 2017-05-17 Martin Liska * c-decl.c (c_parse_final_cleanups): Introduce dump_flags_t type and diff --git a/gcc/c/c-decl.c b/gcc/c/c-decl.c index 5b4bb49..bd6c4c1 100644 --- a/gcc/c/c-decl.c +++ b/gcc/c/c-decl.c @@ -5261,6 +5261,8 @@ build_compound_literal (location_t loc, tree type, tree init, bool non_const) DECL_CONTEXT (decl) = current_function_decl; TREE_USED (decl) = 1; DECL_READ_P (decl) = 1; + DECL_ARTIFICIAL (decl) = 1; + DECL_IGNORED_P (decl) = 1; TREE_TYPE (decl) = type; TREE_READONLY (decl) = (TYPE_READONLY (type) || (TREE_CODE (type) == ARRAY_TYPE @@ -5297,8 +5299,6 @@ build_compound_literal (location_t loc, tree type, tree init, bool non_const) set_compound_literal_name (decl); DECL_DEFER_OUTPUT (decl) = 1; DECL_COMDAT (decl) = 1; - DECL_ARTIFICIAL (decl) = 1; - DECL_IGNORED_P (decl) = 1; pushdecl (decl); rest_of_decl_compilation (decl, 1, 0); } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c4f7687..44f5841 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2017-05-17 Marek Polacek + + PR sanitizer/80659 + * gcc.dg/asan/pr80659.c: New test. + 2017-05-17 Senthil Kumar Selvaraj * gcc.dg/tree-ssa/pr78886.c: Use __SIZE_TYPE__ instead of diff --git a/gcc/testsuite/gcc.dg/asan/pr80659.c b/gcc/testsuite/gcc.dg/asan/pr80659.c new file mode 100644 index 0000000..0cbf2e4 --- /dev/null +++ b/gcc/testsuite/gcc.dg/asan/pr80659.c @@ -0,0 +1,13 @@ +/* PR sanitizer/80659 */ +/* { dg-do compile } */ + +void +foo (int a) +{ + switch (a) + { + case 0: + (int[3]) { }; + int h; + } +}