From: rguenth Date: Thu, 2 May 2019 14:05:27 +0000 (+0000) Subject: 2019-05-02 Richard Biener X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=38aa46766c2dcd10f926f442a77ff6691df11e90;p=thirdparty%2Fgcc.git 2019-05-02 Richard Biener PR tree-optimization/89509 * tree-ssa-structalias.c (compute_dependence_clique): Look at the first subvar when determining whether it is restrict. * gcc.dg/torture/restrict-8.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@270799 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1f55cd18210e..f4f0c14ca253 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2019-05-02 Richard Biener + + PR tree-optimization/89509 + * tree-ssa-structalias.c (compute_dependence_clique): Look + at the first subvar when determining whether it is restrict. + 2019-05-02 Richard Biener PR tree-optimization/90273 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 40228949942d..3976e36ad4ba 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2019-05-02 Richard Biener + + PR tree-optimization/89509 + * gcc.dg/torture/restrict-8.c: New testcase. + 2019-05-02 Iain Sandoe * gcc.dg/tree-prof/section-attr-1.c: Update scan-asm regex diff --git a/gcc/testsuite/gcc.dg/torture/restrict-8.c b/gcc/testsuite/gcc.dg/torture/restrict-8.c new file mode 100644 index 000000000000..0118de0133c8 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/restrict-8.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-skip-if "" { *-*-* } { "-O0" } { "" } } */ +/* { dg-options "-fdump-tree-fre1" } */ + +struct S { int i; void *p; int j; }; +int +foo (struct S * __restrict p, int *q, int flag) +{ + int *x = &p->j; + if (flag) + x = &p->i; + *q = 1; + *x = 2; + return *q; +} + +/* { dg-final { scan-tree-dump "return 1;" "fre1" } } */ diff --git a/gcc/tree-ssa-structalias.c b/gcc/tree-ssa-structalias.c index 4a0b02e9b03c..2e2b0e8cb1e8 100644 --- a/gcc/tree-ssa-structalias.c +++ b/gcc/tree-ssa-structalias.c @@ -7588,9 +7588,12 @@ compute_dependence_clique (void) EXECUTE_IF_SET_IN_BITMAP (vi->solution, 0, j, bi) { varinfo_t oi = get_varinfo (j); + if (oi->head != j) + oi = get_varinfo (oi->head); if (oi->is_restrict_var) { - if (restrict_var) + if (restrict_var + && restrict_var != oi) { if (dump_file && (dump_flags & TDF_DETAILS)) {