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
This commit is contained in:
parent
302fe7500a
commit
01c3ddcffb
4 changed files with 38 additions and 1 deletions
|
@ -1,3 +1,10 @@
|
|||
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.
|
||||
|
||||
2019-02-26 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/89489
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2019-02-26 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/89505
|
||||
* gcc.dg/torture/pr89505.c: New testcase.
|
||||
|
||||
2019-02-26 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* gnat.dg/opt77.adb: New test.
|
||||
|
|
22
gcc/testsuite/gcc.dg/torture/pr89505.c
Normal file
22
gcc/testsuite/gcc.dg/torture/pr89505.c
Normal file
|
@ -0,0 +1,22 @@
|
|||
/* { dg-do run } */
|
||||
|
||||
struct S { int i; void *p; int j; };
|
||||
int a;
|
||||
int __attribute__((noinline))
|
||||
foo (struct S * __restrict p, int q)
|
||||
{
|
||||
int *x = &p->j;
|
||||
if (q)
|
||||
x = &a;
|
||||
p->j = 1;
|
||||
*x = 2;
|
||||
return p->j;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
struct S s;
|
||||
if (foo (&s, 0) != 2)
|
||||
__builtin_abort ();
|
||||
return 0;
|
||||
}
|
|
@ -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;
|
||||
|
|
Loading…
Add table
Reference in a new issue