aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-structalias.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2019-02-26 14:09:19 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2019-02-26 14:09:19 +0000
commit01c3ddcffb38e92e0f59aeb270e4848a5b8941f0 (patch)
tree8ddee9c1d54b069e4321c2f8d22abb607f4b4a61 /gcc/tree-ssa-structalias.c
parent302fe7500a45d9dbe0cdb292f62d7dcbacff9b56 (diff)
downloadgcc-01c3ddcffb38e92e0f59aeb270e4848a5b8941f0.zip
gcc-01c3ddcffb38e92e0f59aeb270e4848a5b8941f0.tar.gz
gcc-01c3ddcffb38e92e0f59aeb270e4848a5b8941f0.tar.bz2
re PR tree-optimization/89505 (LibreOffice miscompilation starting with r260383)
2019-02-26 Richard Biener <rguenther@suse.de> PR tree-optimization/89505 * tree-ssa-structalias.c (compute_dependence_clique): Make sure to handle restrict pointed-to vars with multiple subvars correctly. * gcc.dg/torture/pr89505.c: New testcase. From-SVN: r269212
Diffstat (limited to 'gcc/tree-ssa-structalias.c')
-rw-r--r--gcc/tree-ssa-structalias.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/tree-ssa-structalias.c b/gcc/tree-ssa-structalias.c
index 15f0872..b92fcdd 100644
--- a/gcc/tree-ssa-structalias.c
+++ b/gcc/tree-ssa-structalias.c
@@ -7613,7 +7613,10 @@ compute_dependence_clique (void)
maybe_set_dependence_info);
if (used)
{
- bitmap_set_bit (rvars, restrict_var->id);
+ /* Add all subvars to the set of restrict pointed-to set. */
+ for (unsigned sv = restrict_var->head; sv != 0;
+ sv = get_varinfo (sv)->next)
+ bitmap_set_bit (rvars, sv);
varinfo_t escaped = get_varinfo (find (escaped_id));
if (bitmap_bit_p (escaped->solution, restrict_var->id))
escaped_p = true;