diff options
author | Richard Biener <rguenther@suse.de> | 2018-06-01 10:49:54 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2018-06-01 10:49:54 +0000 |
commit | 47cac108ef3a44811ae56fb9c823d5a2339d751b (patch) | |
tree | 6000c29302bcd9cbda985ea8007afb1127572cf0 /gcc/gimple-fold.c | |
parent | abc24d932cf028c4ba363c89aad530fd0f49d93f (diff) | |
download | gcc-47cac108ef3a44811ae56fb9c823d5a2339d751b.zip gcc-47cac108ef3a44811ae56fb9c823d5a2339d751b.tar.gz gcc-47cac108ef3a44811ae56fb9c823d5a2339d751b.tar.bz2 |
re PR tree-optimization/86017 (multiple consecutive calls to bzero/memset not merged)
2018-06-01 Richard Biener <rguenther@suse.de>
PR middle-end/86017
* gimple-fold.c (var_decl_component_p): Also allow offsetted
vars wrapped in MEM_REFs.
* gcc.dg/tree-ssa/pr86017.c: New testcase.
From-SVN: r261061
Diffstat (limited to 'gcc/gimple-fold.c')
-rw-r--r-- | gcc/gimple-fold.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/gimple-fold.c b/gcc/gimple-fold.c index 9bbe7f1..f6d758a 100644 --- a/gcc/gimple-fold.c +++ b/gcc/gimple-fold.c @@ -632,7 +632,9 @@ var_decl_component_p (tree var) tree inner = var; while (handled_component_p (inner)) inner = TREE_OPERAND (inner, 0); - return SSA_VAR_P (inner); + return (DECL_P (inner) + || (TREE_CODE (inner) == MEM_REF + && TREE_CODE (TREE_OPERAND (inner, 0)) == ADDR_EXPR)); } /* If the SIZE argument representing the size of an object is in a range |