aboutsummaryrefslogtreecommitdiff
path: root/gcc/c
diff options
context:
space:
mode:
authorMarek Polacek <polacek@redhat.com>2017-05-17 09:59:20 +0000
committerMarek Polacek <mpolacek@gcc.gnu.org>2017-05-17 09:59:20 +0000
commit142473df8ea4f3ff7ebd480bf827bfb795da6861 (patch)
tree5c3bbb54b2f753777427ba964bc1673eb4254256 /gcc/c
parent26092cc782a0e027601d4764caa15accefdb56d1 (diff)
downloadgcc-142473df8ea4f3ff7ebd480bf827bfb795da6861.zip
gcc-142473df8ea4f3ff7ebd480bf827bfb795da6861.tar.gz
gcc-142473df8ea4f3ff7ebd480bf827bfb795da6861.tar.bz2
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
Diffstat (limited to 'gcc/c')
-rw-r--r--gcc/c/ChangeLog6
-rw-r--r--gcc/c/c-decl.c4
2 files changed, 8 insertions, 2 deletions
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 <polacek@redhat.com>
+
+ 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 <mliska@suse.cz>
* 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);
}