diff options
author | Jakub Jelinek <jakub@redhat.com> | 2019-03-01 10:26:40 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2019-03-01 10:26:40 +0100 |
commit | c6b363486fc0c421f09cbf7fbc9a7c8bd20ea4eb (patch) | |
tree | 178d7e74b6df31999db154cee348952c86206b70 /gcc | |
parent | d7a700e0a701e5164b8c547f76a2d91f657eee97 (diff) | |
download | gcc-c6b363486fc0c421f09cbf7fbc9a7c8bd20ea4eb.zip gcc-c6b363486fc0c421f09cbf7fbc9a7c8bd20ea4eb.tar.gz gcc-c6b363486fc0c421f09cbf7fbc9a7c8bd20ea4eb.tar.bz2 |
re PR middle-end/89503 (Checking ICE in 'gcc.dg/warn-strlen-no-nul.c')
PR middle-end/89503
* fold-const.c (fold_checksum_tree): Ignore TREE_NO_WARNING bit
on DECL_P and EXPR_P.
From-SVN: r269303
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fold-const.c | 9 |
2 files changed, 15 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bce3f74b..ef18def 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2019-03-01 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/89503 + * fold-const.c (fold_checksum_tree): Ignore TREE_NO_WARNING bit + on DECL_P and EXPR_P. + 2019-03-01 Richard Biener <rguenther@suse.de> PR middle-end/89497 diff --git a/gcc/fold-const.c b/gcc/fold-const.c index b019a91..8989fc7 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -12130,6 +12130,7 @@ fold_checksum_tree (const_tree expr, struct md5_ctx *ctx, memcpy ((char *) &buf, expr, tree_size (expr)); SET_DECL_ASSEMBLER_NAME ((tree)&buf, NULL); buf.decl_with_vis.symtab_node = NULL; + buf.base.nowarning_flag = 0; expr = (tree) &buf; } else if (TREE_CODE_CLASS (code) == tcc_type @@ -12155,6 +12156,14 @@ fold_checksum_tree (const_tree expr, struct md5_ctx *ctx, TYPE_CACHED_VALUES (tmp) = NULL; } } + else if (TREE_NO_WARNING (expr) && (DECL_P (expr) || EXPR_P (expr))) + { + /* Allow TREE_NO_WARNING to be set. Perhaps we shouldn't allow that + and change builtins.c etc. instead - see PR89543. */ + memcpy ((char *) &buf, expr, tree_size (expr)); + buf.base.nowarning_flag = 0; + expr = (tree) &buf; + } md5_process_bytes (expr, tree_size (expr), ctx); if (CODE_CONTAINS_STRUCT (code, TS_TYPED)) fold_checksum_tree (TREE_TYPE (expr), ctx, ht); |