public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Martin Sebor <msebor@gmail.com>
To: Aldy Hernandez <aldyh@redhat.com>,
	GCC patches <gcc-patches@gcc.gnu.org>,
	 Jeff Law <jeffreyalaw@gmail.com>
Cc: Martin Sebor <msebor@redhat.com>
Subject: Re: [PATCH] Try to resolve paths in threader without looking further back.
Date: Wed, 20 Oct 2021 08:35:35 -0600	[thread overview]
Message-ID: <555af8e5-d068-4bf3-23ef-1041f5f7259c@gmail.com> (raw)
In-Reply-To: <20211020102816.656714-1-aldyh@redhat.com>

On 10/20/21 4:28 AM, Aldy Hernandez via Gcc-patches wrote:
> Sometimes we can solve a candidate path without having to recurse
> further back.  This can mostly happen in fully resolving mode, because
> we can ask the ranger what the range on entry to the path is, but
> there's no reason this can't always apply.  This one-liner removes
> the fully-resolving restriction.
> 
> I'm tickled pink to see how many things we now get quite early
> in the compilation.  I actually had to disable jump threading entirely
> for a few tests because the early threader was catching things
> disturbingly early.  Also, as Richi predicted, I saw a lot of pre-VRP
> cleanups happening.
> 
> I was going to commit this as obvious, but I think the test changes
> merit discussion.
> 
> We've been playing games with gcc.dg/tree-ssa/ssa-thread-11.c for quite
> some time.  Every time a threading pass gets smarter, we push the
> check further down the pipeline.  We've officially run out of dumb
> threading passes to disable ;-).  In the last year we've gone up from a
> handful of threads, to 34 threads with the current combination of
> options.  I doubt this is testing anything useful any more, so I've
> removed it.
> 
> Similarly for gcc.dg/tree-ssa/ssa-dom-thread-4.c.  We used to thread 3
> jump threads, but they were disallowed because of loop rotation.  Then
> we started catching more jump threads in VRP2 threading so we tested
> there.  With this patch though, we triple the number of threads found
> from 11 to 31.  I believe this test has outlived its usefulness, and
> I've removed it.  Note that even though we have these outrageous
> possibilities for this test, the block copier ultimately chops them
> down (23 survive though).
> 
> Likewise for ssa-dom-thread-7.c.  The number of threads in this test has
> been growing consistently over the years.  There's no way to test
> what is possible, especially because improvements in one threader open
> up possibilities for another.  With this patch we're up to 41 registered
> jump threads and they're spread over 4 passes.  There's no way to get the
> amount right, and this test has become a source of useless busywork.
> 
> All in all, I believe the simpler jump threading tests, as well as the
> gimple FE tests I've added, more than adequately cover us.
> 
> Tested on x86-64 Linux.
> 
> OK for trunk?
> 
> p.s. As usual, some warning pass gets thrown off.  Martin, I've XFAILed
> it.

I appreciate the heads up.  I'm happy that the threader has
improved.  I'm obviously not pleased that it has led to regressions
in warnings but I understand that in some cases they might be due
to limitations in the warning code.  I think the test case you have
xfailed might be one such example.  The uninitialized warnings are
exquisitely sensitive to these types of changes.  If/when this patch
is applied please reopen PR 89230 and reference this commit.

Having said that, to maintain the quality of diagnostics,
the work that goes into these nice optimizer improvements needs
to be balanced by an effort to either update the warning code
to cope with the IL changes, or the optimizers need to take care
to avoid exposing undefined code that the warnings are designed
to detect.  I'm concerned not just that the quality of GCC 12
diagnostics has been eroding, but also that it seems to be not
just acceptable but expected.

Martin

> 
> gcc/ChangeLog:
> 
> 	* tree-ssa-threadbackward.c (back_threader::find_paths_to_names):
> 	Always try to resolve path without looking back.
> 
> gcc/testsuite/ChangeLog:
> 
> 	* gcc.dg/graphite/scop-dsyr2k-2.c: Adjust for jump threading changes.
> 	* gcc.dg/graphite/scop-dsyr2k.c: Same.
> 	* gcc.dg/graphite/scop-dsyrk-2.c: Same.
> 	* gcc.dg/graphite/scop-dsyrk.c: Same.
> 	* gcc.dg/tree-ssa/pr20701.c: Same.
> 	* gcc.dg/tree-ssa/pr20702.c: Same.
> 	* gcc.dg/tree-ssa/pr21086.c: Same.
> 	* gcc.dg/tree-ssa/pr25382.c: Same.
> 	* gcc.dg/tree-ssa/pr58480.c: Same.
> 	* gcc.dg/tree-ssa/ssa-vrp-thread-1.c: Same.
> 	* gcc.dg/tree-ssa/vrp08.c: Same.
> 	* gcc.dg/tree-ssa/vrp55.c: Same.
> 	* gcc.dg/tree-ssa/ssa-dom-thread-4.c: Removed.
> 	* gcc.dg/tree-ssa/ssa-dom-thread-7.c: Removed.
> 	* gcc.dg/tree-ssa/ssa-thread-11.c: Removed.
> 	* gcc.dg/uninit-pr89230-1.c: xfail.
> ---
>   gcc/testsuite/gcc.dg/graphite/scop-dsyr2k-2.c |   1 +
>   gcc/testsuite/gcc.dg/graphite/scop-dsyr2k.c   |   1 +
>   gcc/testsuite/gcc.dg/graphite/scop-dsyrk-2.c  |   1 +
>   gcc/testsuite/gcc.dg/graphite/scop-dsyrk.c    |   1 +
>   gcc/testsuite/gcc.dg/tree-ssa/pr20701.c       |   2 +-
>   gcc/testsuite/gcc.dg/tree-ssa/pr20702.c       |   2 +-
>   gcc/testsuite/gcc.dg/tree-ssa/pr21086.c       |   2 +-
>   gcc/testsuite/gcc.dg/tree-ssa/pr25382.c       |   2 +-
>   gcc/testsuite/gcc.dg/tree-ssa/pr58480.c       |   2 +-
>   .../gcc.dg/tree-ssa/ssa-dom-thread-4.c        |  60 --------
>   .../gcc.dg/tree-ssa/ssa-dom-thread-7.c        | 134 ------------------
>   gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-11.c |  50 -------
>   .../gcc.dg/tree-ssa/ssa-vrp-thread-1.c        |   4 +-
>   gcc/testsuite/gcc.dg/tree-ssa/vrp08.c         |   2 +-
>   gcc/testsuite/gcc.dg/tree-ssa/vrp55.c         |   6 +-
>   gcc/testsuite/gcc.dg/uninit-pr89230-1.c       |   3 +-
>   gcc/tree-ssa-threadbackward.c                 |   4 +-
>   17 files changed, 19 insertions(+), 258 deletions(-)
>   delete mode 100644 gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-4.c
>   delete mode 100644 gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-7.c
>   delete mode 100644 gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-11.c
> 
> diff --git a/gcc/testsuite/gcc.dg/graphite/scop-dsyr2k-2.c b/gcc/testsuite/gcc.dg/graphite/scop-dsyr2k-2.c
> index 06aa19a8577..42e23fc157e 100644
> --- a/gcc/testsuite/gcc.dg/graphite/scop-dsyr2k-2.c
> +++ b/gcc/testsuite/gcc.dg/graphite/scop-dsyr2k-2.c
> @@ -1,4 +1,5 @@
>   /* { dg-require-effective-target size32plus } */
> +/* { dg-additional-options "-fno-thread-jumps" } */
>   #define NMAX 3000
>   
>   static double a[NMAX][NMAX], b[NMAX][NMAX], c[NMAX][NMAX];
> diff --git a/gcc/testsuite/gcc.dg/graphite/scop-dsyr2k.c b/gcc/testsuite/gcc.dg/graphite/scop-dsyr2k.c
> index 41c91b97b57..feb99358ac7 100644
> --- a/gcc/testsuite/gcc.dg/graphite/scop-dsyr2k.c
> +++ b/gcc/testsuite/gcc.dg/graphite/scop-dsyr2k.c
> @@ -1,4 +1,5 @@
>   /* { dg-require-effective-target size32plus } */
> +/* { dg-additional-options "-fno-thread-jumps" } */
>   #define NMAX 3000
>   
>   static double a[NMAX][NMAX], b[NMAX][NMAX], c[NMAX][NMAX];
> diff --git a/gcc/testsuite/gcc.dg/graphite/scop-dsyrk-2.c b/gcc/testsuite/gcc.dg/graphite/scop-dsyrk-2.c
> index 5622dce4798..935ade3fb6e 100644
> --- a/gcc/testsuite/gcc.dg/graphite/scop-dsyrk-2.c
> +++ b/gcc/testsuite/gcc.dg/graphite/scop-dsyrk-2.c
> @@ -1,4 +1,5 @@
>   /* { dg-require-effective-target size32plus } */
> +/* { dg-additional-options "-fno-thread-jumps" } */
>   #define NMAX 3000
>   #define MEASURE_TIME 1
>   
> diff --git a/gcc/testsuite/gcc.dg/graphite/scop-dsyrk.c b/gcc/testsuite/gcc.dg/graphite/scop-dsyrk.c
> index e01a517be11..5c65e406589 100644
> --- a/gcc/testsuite/gcc.dg/graphite/scop-dsyrk.c
> +++ b/gcc/testsuite/gcc.dg/graphite/scop-dsyrk.c
> @@ -1,4 +1,5 @@
>   /* { dg-require-effective-target size32plus } */
> +/* { dg-additional-options "-fno-thread-jumps" } */
>   #define NMAX 3000
>   #define MEASURE_TIME 1
>   
> diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr20701.c b/gcc/testsuite/gcc.dg/tree-ssa/pr20701.c
> index 2f914589e32..496c4256733 100644
> --- a/gcc/testsuite/gcc.dg/tree-ssa/pr20701.c
> +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr20701.c
> @@ -1,5 +1,5 @@
>   /* { dg-do compile } */
> -/* { dg-options "-O2 -fdump-tree-vrp1 -fno-early-inlining -fdelete-null-pointer-checks" } */
> +/* { dg-options "-O2 -fdump-tree-vrp1 -fno-early-inlining -fdelete-null-pointer-checks -fdisable-tree-thread1" } */
>   
>   typedef struct {
>     int code;
> diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr20702.c b/gcc/testsuite/gcc.dg/tree-ssa/pr20702.c
> index c896857748c..81129674d8a 100644
> --- a/gcc/testsuite/gcc.dg/tree-ssa/pr20702.c
> +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr20702.c
> @@ -4,7 +4,7 @@
>      immediate successors of the basic block.  */
>   
>   /* { dg-do compile } */
> -/* { dg-options "-O2 -fno-tree-dominator-opts -fdisable-tree-evrp -fdump-tree-vrp1-details -fdelete-null-pointer-checks" } */
> +/* { dg-options "-O2 -fno-thread-jumps -fdisable-tree-evrp -fdump-tree-vrp1-details -fdelete-null-pointer-checks" } */
>   
>   extern void bar (int);
>   
> diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr21086.c b/gcc/testsuite/gcc.dg/tree-ssa/pr21086.c
> index aadd53e2237..9b93d39d4e4 100644
> --- a/gcc/testsuite/gcc.dg/tree-ssa/pr21086.c
> +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr21086.c
> @@ -1,5 +1,5 @@
>   /* { dg-do compile } */
> -/* { dg-options "-O2 -fdisable-tree-evrp -fdump-tree-vrp1 -fdump-tree-dce2 -fdelete-null-pointer-checks" } */
> +/* { dg-options "-O2 -fno-thread-jumps -fdisable-tree-evrp -fdump-tree-vrp1 -fdump-tree-dce2 -fdelete-null-pointer-checks" } */
>   
>   int
>   foo (int *p)
> diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr25382.c b/gcc/testsuite/gcc.dg/tree-ssa/pr25382.c
> index d74765551c2..8634c0a7895 100644
> --- a/gcc/testsuite/gcc.dg/tree-ssa/pr25382.c
> +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr25382.c
> @@ -3,7 +3,7 @@
>      Check that VRP now gets ranges from BIT_AND_EXPRs.  */
>   
>   /* { dg-do compile } */
> -/* { dg-options "-O2 -fno-tree-ccp -fdisable-tree-evrp -fdump-tree-vrp1" } */
> +/* { dg-options "-O2 -fno-thread-jumps -fno-tree-ccp -fdisable-tree-evrp -fdump-tree-vrp1" } */
>   
>   int
>   foo (int a)
> diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr58480.c b/gcc/testsuite/gcc.dg/tree-ssa/pr58480.c
> index 42898e72d4e..f11623b7c6b 100644
> --- a/gcc/testsuite/gcc.dg/tree-ssa/pr58480.c
> +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr58480.c
> @@ -1,5 +1,5 @@
>   /* { dg-do compile { target { ! keeps_null_pointer_checks } } } */
> -/* { dg-options "-O2 -fdisable-tree-evrp -fdump-tree-vrp1 -fdelete-null-pointer-checks" } */
> +/* { dg-options "-O2 -fno-thread-jumps -fdisable-tree-evrp -fdump-tree-vrp1 -fdelete-null-pointer-checks" } */
>   
>   extern void eliminate (void);
>   extern void* f1 (void *a, void *b) __attribute__((nonnull));
> diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-4.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-4.c
> deleted file mode 100644
> index 9cd463571c4..00000000000
> --- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-4.c
> +++ /dev/null
> @@ -1,60 +0,0 @@
> -/* { dg-do compile } */
> -/* { dg-options "-O2 -fdump-tree-vrp-thread2-details -fdump-tree-dom2-details -std=gnu89 --param logical-op-non-short-circuit=1" } */
> -struct bitmap_head_def;
> -typedef struct bitmap_head_def *bitmap;
> -typedef const struct bitmap_head_def *const_bitmap;
> -typedef unsigned long BITMAP_WORD;
> -typedef struct bitmap_element_def
> -{
> -  struct bitmap_element_def *next;
> -  unsigned int indx;
> -} bitmap_element;
> -
> -
> -
> -
> -
> -
> -
> -
> -
> -unsigned char
> -bitmap_ior_and_compl (bitmap dst, const_bitmap a, const_bitmap b,
> -		      const_bitmap kill)
> -{
> -  unsigned char changed = 0;
> -
> -  bitmap_element *dst_elt;
> -  const bitmap_element *a_elt, *b_elt, *kill_elt, *dst_prev;
> -
> -  while (a_elt || b_elt)
> -    {
> -      unsigned char new_element = 0;
> -
> -      if (b_elt)
> -	while (kill_elt && kill_elt->indx < b_elt->indx)
> -	  kill_elt = kill_elt->next;
> -
> -      if (b_elt && kill_elt && kill_elt->indx == b_elt->indx
> -	  && (!a_elt || a_elt->indx >= b_elt->indx))
> -	{
> -	  bitmap_element tmp_elt;
> -	  unsigned ix;
> -
> -	  BITMAP_WORD ior = 0;
> -
> -	      changed = bitmap_elt_ior (dst, dst_elt, dst_prev,
> -					a_elt, &tmp_elt, changed);
> -
> -	}
> -
> -    }
> -
> -
> -  return changed;
> -}
> -/* We used to catch 3 jump threads in vrp-thread1, but they all
> -   rotated the loop, so they were disallowed.  This in turn created
> -   other opportunities for the other threaders which result in the the
> -   post-loop threader (vrp-thread2) catching more.  */
> -/* { dg-final { scan-tree-dump-times "Registering jump thread" 5 "vrp-thread2" } } */
> diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-7.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-7.c
> deleted file mode 100644
> index 1da00a691c8..00000000000
> --- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-7.c
> +++ /dev/null
> @@ -1,134 +0,0 @@
> -/* { dg-do compile } */
> -/* { dg-options "-O2 -fdump-tree-thread1-stats -fdump-tree-thread2-stats -fdump-tree-dom2-stats -fdump-tree-thread3-stats -fdump-tree-dom3-stats -fdump-tree-vrp2-stats -fno-guess-branch-probability" } */
> -
> -/* { dg-final { scan-tree-dump "Jumps threaded: 12"  "thread3" } } */
> -/* { dg-final { scan-tree-dump-not "Jumps threaded"  "dom2" } } */
> -
> -/* aarch64 has the highest CASE_VALUES_THRESHOLD in GCC.  It's high enough
> -   to change decisions in switch expansion which in turn can expose new
> -   jump threading opportunities.  Skip the later tests on aarch64.  */
> -/* { dg-final { scan-tree-dump-not "Jumps threaded"  "dom3" { target { ! aarch64*-*-* } } } } */
> -/* { dg-final { scan-tree-dump-not "Jumps threaded"  "vrp-thread2" { target { ! aarch64*-*-* } } } } */
> -
> -enum STATE {
> -  S0=0,
> -  SI,
> -  S1,
> -  S2,
> -  S3,
> -  S4,
> -  S5,
> -  S6
> -};
> -
> -int bar (enum STATE s);
> -
> -enum STATE foo (unsigned char **y, unsigned *c)
> -{
> -  unsigned char *x = *y;
> -  unsigned char n;
> -  enum STATE s = S0;
> -
> -  for( ; *x && s != SI; x++ )
> -    {
> -      n = *x;
> -      if (n == 'x')
> -	{
> -	  x++;
> -	  break;
> -	}
> -      switch(s)
> -	{
> -	case S0:
> -	  if(bar(n))
> -	    s = S3;
> -	  else if( n == 'a' || n == 'b' )
> -	    s = S1;
> -	  else if( n == 'c' )
> -	    s = S4;
> -	  else
> -	    {
> -	      s = SI;
> -	      c[SI]++;
> -	    }
> -	  c[S0]++;
> -	  break;
> -	case S1:
> -	  if(bar(n))
> -	    {
> -	      s = S3;
> -	      c[S1]++;
> -	    }
> -	  else if( n == 'c' )
> -	    {
> -	      s = S4;
> -	      c[S1]++;
> -	    }
> -	  else
> -	    {
> -	      s = SI;
> -	      c[S1]++;
> -	    }
> -	  break;
> -	case S3:
> -	  if( n == 'c' )
> -	    {
> -	      s = S4;
> -	      c[S3]++;
> -	    }
> -	  else if(!bar(n))
> -	    {
> -	      s = SI;
> -	      c[S3]++;
> -	    }
> -	  break;
> -	case S4:
> -	  if( n == 'E' || n == 'e' )
> -	    {
> -	      s = S2;
> -	      c[S4]++;
> -	    }
> -	  else if(!bar(n))
> -	    {
> -	      s = SI;
> -	      c[S4]++;
> -	    }
> -	  break;
> -	case S2:
> -	  if( n == 'a' || n == 'b' )
> -	    {
> -	      s = S5;
> -	      c[S2]++;
> -	    }
> -	  else
> -	    {
> -	      s = SI;
> -	      c[S2]++;
> -	    }
> -	  break;
> -	case S5:
> -	  if(bar(n))
> -	    {
> -	      s = S6;
> -	      c[S5]++;
> -	    }
> -	  else
> -	    {
> -	      s = SI;
> -	      c[S5]++;
> -	    }
> -	  break;
> -	case S6:
> -	  if(!bar(n))
> -	    {
> -	      s = SI;
> -	      c[SI]++;
> -	    }
> -	  break;
> -	default:
> -	  break;
> -	}
> -    }
> -  *y=x;
> -  return s;
> -}
> diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-11.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-11.c
> deleted file mode 100644
> index 672a54e07db..00000000000
> --- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-11.c
> +++ /dev/null
> @@ -1,50 +0,0 @@
> -/* { dg-do compile } */
> -/* { dg-options "-O2 -fdump-tree-vrp2-details --param logical-op-non-short-circuit=1" } */
> -/* { dg-additional-options "-fdisable-tree-ethread -fdisable-tree-thread1 -fdisable-tree-thread2" } */
> -/* { dg-final { scan-tree-dump-not "IRREDUCIBLE_LOOP" "vrp2" } } */
> -
> -void abort (void);
> -typedef struct bitmap_head_def *bitmap;
> -typedef const struct bitmap_head_def *const_bitmap;
> -typedef struct bitmap_obstack
> -{
> -  struct bitmap_obstack *next;
> -  unsigned int indx;
> -}
> -bitmap_element;
> -typedef struct bitmap_head_def
> -{
> -  bitmap_element *first;
> -}
> -bitmap_head;
> -static __inline__ unsigned char
> -bitmap_elt_ior (bitmap dst, bitmap_element * dst_elt,
> -		bitmap_element * dst_prev, const bitmap_element * a_elt,
> -		const bitmap_element * b_elt)
> -{
> -  ((void) (!(a_elt || b_elt) ? abort (), 0 : 0));
> -}
> -
> -unsigned char
> -bitmap_ior_and_compl (bitmap dst, const_bitmap a, const_bitmap b,
> -		      const_bitmap kill)
> -{
> -  bitmap_element *dst_elt = dst->first;
> -  const bitmap_element *a_elt = a->first;
> -  const bitmap_element *b_elt = b->first;
> -  const bitmap_element *kill_elt = kill->first;
> -  bitmap_element *dst_prev = ((void *) 0);
> -  while (a_elt || b_elt)
> -    {
> -      if (b_elt && kill_elt && kill_elt->indx == b_elt->indx
> -	  && (!a_elt || a_elt->indx >= b_elt->indx));
> -      else
> -	{
> -	  bitmap_elt_ior (dst, dst_elt, dst_prev, a_elt, b_elt);
> -	  if (a_elt && b_elt && a_elt->indx == b_elt->indx)
> -	    ;
> -	  else if (a_elt && (!b_elt || a_elt->indx <= b_elt->indx))
> -	    a_elt = a_elt->next;
> -	}
> -    }
> -}
> diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-vrp-thread-1.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-vrp-thread-1.c
> index 86d07ef9bdb..f3ca140bd26 100644
> --- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-vrp-thread-1.c
> +++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-vrp-thread-1.c
> @@ -1,5 +1,5 @@
>   /* { dg-do compile } */
> -/* { dg-options "-O2 -fdump-tree-vrp-thread1-details -fdelete-null-pointer-checks" } */
> +/* { dg-options "-O2 -fdump-tree-thread1-details -fdelete-null-pointer-checks" } */
>   /* { dg-skip-if "" keeps_null_pointer_checks } */
>   
>   void oof (void);
> @@ -29,5 +29,5 @@ build_omp_regions_1 (basic_block bb, struct omp_region *parent,
>   
>   /* ARM Cortex-M defined LOGICAL_OP_NON_SHORT_CIRCUIT to false,
>      so skip below test.  */
> -/* { dg-final { scan-tree-dump-times "Threaded" 1 "vrp-thread1" { target { ! arm_cortex_m } } } } */
> +/* { dg-final { scan-tree-dump-times "Registering jump thread" 1 "thread1" { target { ! arm_cortex_m } } } } */
>   
> diff --git a/gcc/testsuite/gcc.dg/tree-ssa/vrp08.c b/gcc/testsuite/gcc.dg/tree-ssa/vrp08.c
> index c2da30b4b68..2c6742b76c7 100644
> --- a/gcc/testsuite/gcc.dg/tree-ssa/vrp08.c
> +++ b/gcc/testsuite/gcc.dg/tree-ssa/vrp08.c
> @@ -1,5 +1,5 @@
>   /* { dg-do compile } */
> -/* { dg-options "-O2 -fno-tree-fre -fdisable-tree-evrp -fdump-tree-vrp1-details -fdelete-null-pointer-checks" } */
> +/* { dg-options "-O2 -fno-tree-fre -fdisable-tree-evrp -fdump-tree-vrp1-details -fdisable-tree-thread1 -fdelete-null-pointer-checks" } */
>   
>   /* Compile with -fno-tree-fre -O2 to prevent CSEing *p.  */
>   int
> diff --git a/gcc/testsuite/gcc.dg/tree-ssa/vrp55.c b/gcc/testsuite/gcc.dg/tree-ssa/vrp55.c
> index a478a6981ac..0ef57d935e4 100644
> --- a/gcc/testsuite/gcc.dg/tree-ssa/vrp55.c
> +++ b/gcc/testsuite/gcc.dg/tree-ssa/vrp55.c
> @@ -1,5 +1,5 @@
>   /* { dg-do compile } */
> -/* { dg-options "-O2 -fdump-tree-vrp-thread1-blocks-vops-details -fdelete-null-pointer-checks" } */
> +/* { dg-options "-O2 -fdump-tree-ethread-details -fdelete-null-pointer-checks" } */
>   
>   void arf (void);
>   
> @@ -12,6 +12,6 @@ fu (char *p, int x)
>       arf ();
>   }
>   
> -/* { dg-final { scan-tree-dump-times "Threaded jump" 1 "vrp-thread1" { target { ! keeps_null_pointer_checks } } } } */
> -/* { dg-final { scan-tree-dump-times "Threaded jump" 0 "vrp-thread1" { target {   keeps_null_pointer_checks } } } } */
> +/* { dg-final { scan-tree-dump-times "Registering jump thread" 1 "ethread" { target { ! keeps_null_pointer_checks } } } } */
> +/* { dg-final { scan-tree-dump-times "Registering jump thread" 0 "ethread" { target {   keeps_null_pointer_checks } } } } */
>   
> diff --git a/gcc/testsuite/gcc.dg/uninit-pr89230-1.c b/gcc/testsuite/gcc.dg/uninit-pr89230-1.c
> index 1c07c4f6d78..dfc87a5b1a0 100644
> --- a/gcc/testsuite/gcc.dg/uninit-pr89230-1.c
> +++ b/gcc/testsuite/gcc.dg/uninit-pr89230-1.c
> @@ -8,7 +8,8 @@ struct S { int i, j; };
>   
>   int g (void)
>   {
> -  struct S *p = f (), *q;
> +  struct S *p = f ();
> +  struct S *q; // { dg-bogus "may be used uninitialized" "uninitialized" { xfail *-*-* } }
>   
>     if (p->i || !(q = f ()) || p->j != q->i)
>      {
> diff --git a/gcc/tree-ssa-threadbackward.c b/gcc/tree-ssa-threadbackward.c
> index d94e3b962db..edb396b3d6f 100644
> --- a/gcc/tree-ssa-threadbackward.c
> +++ b/gcc/tree-ssa-threadbackward.c
> @@ -374,8 +374,8 @@ back_threader::find_paths_to_names (basic_block bb, bitmap interesting)
>         return false;
>       }
>   
> -  // Try to resolve the path with nothing but ranger knowledge.
> -  if (m_resolve && m_path.length () > 1 && maybe_register_path ())
> +  // Try to resolve the path without looking back.
> +  if (m_path.length () > 1 && maybe_register_path ())
>       {
>         m_path.pop ();
>         m_visited_bbs.remove (bb);
> 


  reply	other threads:[~2021-10-20 14:35 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-20 10:28 Aldy Hernandez
2021-10-20 14:35 ` Martin Sebor [this message]
2021-10-20 15:15   ` Aldy Hernandez
2021-10-20 20:01     ` Jeff Law
2021-10-21  7:17       ` Aldy Hernandez
2021-10-21 14:50         ` Martin Sebor
2021-10-22 11:22           ` Aldy Hernandez
2021-10-22 14:27             ` Martin Sebor
2021-10-22 15:18               ` Aldy Hernandez
2021-10-22 15:59                 ` Martin Sebor
2021-10-23  8:31                   ` Aldy Hernandez
2021-10-21 17:59         ` Jeff Law
2021-10-21  7:22       ` Richard Biener
2021-10-20 20:19 ` Jeff Law
2021-10-21 10:15   ` Aldy Hernandez
2021-10-22  3:34     ` Jeff Law
2021-10-22  3:53       ` Aldy Hernandez
2021-10-24 16:57         ` Jeff Law
2021-10-24 17:55           ` Bernhard Reutner-Fischer
2021-10-24 18:21           ` Richard Biener
2021-10-24 18:25           ` Aldy Hernandez
2021-10-25  6:47             ` Aldy Hernandez
2021-10-25 18:42             ` Jeff Law
2021-10-25 18:49               ` Aldy Hernandez
2021-10-25 18:58                 ` Jeff Law
2021-10-25 16:58 ` Andrew MacLeod
2021-10-25 17:01   ` Aldy Hernandez
2021-10-25 17:02   ` Jeff Law

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=555af8e5-d068-4bf3-23ef-1041f5f7259c@gmail.com \
    --to=msebor@gmail.com \
    --cc=aldyh@redhat.com \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=jeffreyalaw@gmail.com \
    --cc=msebor@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).