On Tue, Aug 1, 2023 at 12:15 PM Jan Hubicka via Gcc-patches
<gcc-patches@gcc.gnu.org> wrote:
>
> Hi,
> This patch fixes update after constant peeling in profilogue.  We now reached 
> 0 profile
> update bugs on tramp3d vectorizaiton and also on quite few testcases, so I am 
> enabling the
> testuiste checks so we do not regress again.
>
> Bootstrapped/regtested x86_64, comitted.

Note most of the profile consistency checks FAIL when testing with -m32 on
x86_64-unknown-linux-gnu ...

For example vect-11.c has

;;   basic block 4, loop depth 0, count 719407024 (estimated locally,
freq 0.6700), maybe hot
;;   Invalid sum of incoming counts 708669602 (estimated locally, freq
0.6600), should be 719407024 (estimated locally, freq 0.6700)
;;    prev block 3, next block 5, flags: (NEW, REACHABLE, VISITED)
;;    pred:       3 [always (guessed)]  count:708669602 (estimated
locally, freq 0.6600) (FALSE_VALUE,EXECUTABLE)
  __asm__ __volatile__("cpuid
        " : "=a" a_44, "=b" b_45, "=c" c_46, "=d" d_47 : "0" 1, "2" 0);
  _3 = d_47 & 67108864;

so it looks like it's the check_vect () function that goes wrong
everywhere but only on i?86.
The first dump with the Invalid sum is 095t.fixup_cfg3 already.

Richard.

> Honza
>
> gcc/ChangeLog:
>
>         * tree-vect-loop-manip.cc (vect_do_peeling): Fix profile update after
>         constant prologue peeling.
>
> gcc/testsuite/ChangeLog:
>
>         * gcc.dg/vect/vect-1-big-array.c: Check profile consistency.
>         * gcc.dg/vect/vect-1.c: Check profile consistency.
>         * gcc.dg/vect/vect-10-big-array.c: Check profile consistency.
>         * gcc.dg/vect/vect-10.c: Check profile consistency.
>         * gcc.dg/vect/vect-100.c: Check profile consistency.
>         * gcc.dg/vect/vect-103.c: Check profile consistency.
>         * gcc.dg/vect/vect-104.c: Check profile consistency.
>         * gcc.dg/vect/vect-105-big-array.c: Check profile consistency.
>         * gcc.dg/vect/vect-105.c: Check profile consistency.
>         * gcc.dg/vect/vect-106.c: Check profile consistency.
>         * gcc.dg/vect/vect-107.c: Check profile consistency.
>         * gcc.dg/vect/vect-108.c: Check profile consistency.
>         * gcc.dg/vect/vect-109.c: Check profile consistency.
>         * gcc.dg/vect/vect-11.c: Check profile consistency.
>         * gcc.dg/vect/vect-110.c: Check profile consistency.
>         * gcc.dg/vect/vect-112-big-array.c: Check profile consistency.
>         * gcc.dg/vect/vect-112.c: Check profile consistency.
>         * gcc.dg/vect/vect-113.c: Check profile consistency.
>         * gcc.dg/vect/vect-114.c: Check profile consistency.
>         * gcc.dg/vect/vect-115.c: Check profile consistency.
>         * gcc.dg/vect/vect-116.c: Check profile consistency.
>         * gcc.dg/vect/vect-117.c: Check profile consistency.
>         * gcc.dg/vect/vect-118.c: Check profile consistency.
>         * gcc.dg/vect/vect-119.c: Check profile consistency.
>         * gcc.dg/vect/vect-11a.c: Check profile consistency.
>         * gcc.dg/vect/vect-12.c: Check profile consistency.
>         * gcc.dg/vect/vect-120.c: Check profile consistency.
>         * gcc.dg/vect/vect-121.c: Check profile consistency.
>         * gcc.dg/vect/vect-122.c: Check profile consistency.
>         * gcc.dg/vect/vect-123.c: Check profile consistency.
>         * gcc.dg/vect/vect-124.c: Check profile consistency.
>         * gcc.dg/vect/vect-126.c: Check profile consistency.
>         * gcc.dg/vect/vect-13.c: Check profile consistency.
>         * gcc.dg/vect/vect-14.c: Check profile consistency.
>         * gcc.dg/vect/vect-15-big-array.c: Check profile consistency.
>         * gcc.dg/vect/vect-15.c: Check profile consistency.
>         * gcc.dg/vect/vect-17.c: Check profile consistency.
>         * gcc.dg/vect/vect-18.c: Check profile consistency.
>         * gcc.dg/vect/vect-19.c: Check profile consistency.
>         * gcc.dg/vect/vect-2-big-array.c: Check profile consistency.
>         * gcc.dg/vect/vect-2.c: Check profile consistency.
>         * gcc.dg/vect/vect-20.c: Check profile consistency.
>         * gcc.dg/vect/vect-21.c: Check profile consistency.
>         * gcc.dg/vect/vect-22.c: Check profile consistency.
>         * gcc.dg/vect/vect-23.c: Check profile consistency.
>         * gcc.dg/vect/vect-24.c: Check profile consistency.
>         * gcc.dg/vect/vect-25.c: Check profile consistency.
>         * gcc.dg/vect/vect-26.c: Check profile consistency.
>         * gcc.dg/vect/vect-27.c: Check profile consistency.
>         * gcc.dg/vect/vect-28.c: Check profile consistency.
>         * gcc.dg/vect/vect-29.c: Check profile consistency.
>         * gcc.dg/vect/vect-3.c: Check profile consistency.
>         * gcc.dg/vect/vect-30.c: Check profile consistency.
>         * gcc.dg/vect/vect-31-big-array.c: Check profile consistency.
>         * gcc.dg/vect/vect-31.c: Check profile consistency.
>         * gcc.dg/vect/vect-32-big-array.c: Check profile consistency.
>         * gcc.dg/vect/vect-32-chars.c: Check profile consistency.
>         * gcc.dg/vect/vect-32.c: Check profile consistency.
>         * gcc.dg/vect/vect-33-big-array.c: Check profile consistency.
>         * gcc.dg/vect/vect-33.c: Check profile consistency.
>         * gcc.dg/vect/vect-34-big-array.c: Check profile consistency.
>         * gcc.dg/vect/vect-34.c: Check profile consistency.
>         * gcc.dg/vect/vect-35-big-array.c: Check profile consistency.
>         * gcc.dg/vect/vect-35.c: Check profile consistency.
>         * gcc.dg/vect/vect-36-big-array.c: Check profile consistency.
>         * gcc.dg/vect/vect-36.c: Check profile consistency.
>         * gcc.dg/vect/vect-38.c: Check profile consistency.
>         * gcc.dg/vect/vect-4.c: Check profile consistency.
>         * gcc.dg/vect/vect-40.c: Check profile consistency.
>         * gcc.dg/vect/vect-42.c: Check profile consistency.
>         * gcc.dg/vect/vect-44.c: Check profile consistency.
>         * gcc.dg/vect/vect-46.c: Check profile consistency.
>         * gcc.dg/vect/vect-48.c: Check profile consistency.
>         * gcc.dg/vect/vect-5.c: Check profile consistency.
>         * gcc.dg/vect/vect-50.c: Check profile consistency.
>         * gcc.dg/vect/vect-52.c: Check profile consistency.
>         * gcc.dg/vect/vect-54.c: Check profile consistency.
>         * gcc.dg/vect/vect-56.c: Check profile consistency.
>         * gcc.dg/vect/vect-58.c: Check profile consistency.
>         * gcc.dg/vect/vect-6-big-array.c: Check profile consistency.
>         * gcc.dg/vect/vect-6.c: Check profile consistency.
>         * gcc.dg/vect/vect-60.c: Check profile consistency.
>         * gcc.dg/vect/vect-62.c: Check profile consistency.
>         * gcc.dg/vect/vect-63.c: Check profile consistency.
>         * gcc.dg/vect/vect-64.c: Check profile consistency.
>         * gcc.dg/vect/vect-65.c: Check profile consistency.
>         * gcc.dg/vect/vect-66.c: Check profile consistency.
>         * gcc.dg/vect/vect-67.c: Check profile consistency.
>         * gcc.dg/vect/vect-68.c: Check profile consistency.
>         * gcc.dg/vect/vect-7.c: Check profile consistency.
>         * gcc.dg/vect/vect-70.c: Check profile consistency.
>         * gcc.dg/vect/vect-71.c: Check profile consistency.
>         * gcc.dg/vect/vect-72.c: Check profile consistency.
>         * gcc.dg/vect/vect-73-big-array.c: Check profile consistency.
>         * gcc.dg/vect/vect-73.c: Check profile consistency.
>         * gcc.dg/vect/vect-74-big-array.c: Check profile consistency.
>         * gcc.dg/vect/vect-74.c: Check profile consistency.
>         * gcc.dg/vect/vect-75-big-array.c: Check profile consistency.
>         * gcc.dg/vect/vect-75.c: Check profile consistency.
>         * gcc.dg/vect/vect-76-big-array.c: Check profile consistency.
>         * gcc.dg/vect/vect-76.c: Check profile consistency.
>         * gcc.dg/vect/vect-77-alignchecks.c: Check profile consistency.
>         * gcc.dg/vect/vect-77-global.c: Check profile consistency.
>         * gcc.dg/vect/vect-77.c: Check profile consistency.
>         * gcc.dg/vect/vect-78-alignchecks.c: Check profile consistency.
>         * gcc.dg/vect/vect-78-global.c: Check profile consistency.
>         * gcc.dg/vect/vect-78.c: Check profile consistency.
>         * gcc.dg/vect/vect-8.c: Check profile consistency.
>         * gcc.dg/vect/vect-80-big-array.c: Check profile consistency.
>         * gcc.dg/vect/vect-80.c: Check profile consistency.
>         * gcc.dg/vect/vect-82.c: Check profile consistency.
>         * gcc.dg/vect/vect-82_64.c: Check profile consistency.
>         * gcc.dg/vect/vect-83.c: Check profile consistency.
>         * gcc.dg/vect/vect-83_64.c: Check profile consistency.
>         * gcc.dg/vect/vect-85-big-array.c: Check profile consistency.
>         * gcc.dg/vect/vect-85.c: Check profile consistency.
>         * gcc.dg/vect/vect-86.c: Check profile consistency.
>         * gcc.dg/vect/vect-87.c: Check profile consistency.
>         * gcc.dg/vect/vect-88.c: Check profile consistency.
>         * gcc.dg/vect/vect-89-big-array.c: Check profile consistency.
>         * gcc.dg/vect/vect-89.c: Check profile consistency.
>         * gcc.dg/vect/vect-9.c: Check profile consistency.
>         * gcc.dg/vect/vect-91.c: Check profile consistency.
>         * gcc.dg/vect/vect-92.c: Check profile consistency.
>         * gcc.dg/vect/vect-93.c: Check profile consistency.
>         * gcc.dg/vect/vect-95.c: Check profile consistency.
>         * gcc.dg/vect/vect-96.c: Check profile consistency.
>         * gcc.dg/vect/vect-97-big-array.c: Check profile consistency.
>         * gcc.dg/vect/vect-97.c: Check profile consistency.
>         * gcc.dg/vect/vect-98-big-array.c: Check profile consistency.
>         * gcc.dg/vect/vect-98.c: Check profile consistency.
>         * gcc.dg/vect/vect-99.c: Check profile consistency.
>
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-1-big-array.c 
> b/gcc/testsuite/gcc.dg/vect/vect-1-big-array.c
> index 3ec32eba7a3..5ffbf1bf3aa 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-1-big-array.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-1-big-array.c
> @@ -1,4 +1,5 @@
>  /* { dg-do compile } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>  /* { dg-require-effective-target vect_int } */
>  /* { dg-require-effective-target vect_float } */
>
> @@ -88,3 +89,4 @@ foo (int n)
>
>  /* { dg-final { scan-tree-dump-times "vectorized 6 loops" 1 "vect" { target 
> vect_strided2 } } } */
>  /* { dg-final { scan-tree-dump-times "vectorized 5 loops" 1 "vect" { xfail 
> vect_strided2 } } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-1.c 
> b/gcc/testsuite/gcc.dg/vect/vect-1.c
> index 2f0d19970c0..cba9ce076ab 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-1.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-1.c
> @@ -1,4 +1,5 @@
>  /* { dg-do compile } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>  /* { dg-require-effective-target vect_int } */
>  /* { dg-require-effective-target vect_float } */
>
> @@ -88,3 +89,4 @@ foo (int n)
>
>  /* { dg-final { scan-tree-dump-times "vectorized 6 loops" 1 "vect" { target 
> vect_strided2 } } } */
>  /* { dg-final { scan-tree-dump-times "vectorized 5 loops" 1 "vect" { xfail 
> vect_strided2 } } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-10-big-array.c 
> b/gcc/testsuite/gcc.dg/vect/vect-10-big-array.c
> index f266ac8617c..ac18f2bf2e9 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-10-big-array.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-10-big-array.c
> @@ -1,4 +1,5 @@
>  /* { dg-do compile } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>  /* { dg-require-effective-target vect_int } */
>
>  extern void abort (void);
> @@ -31,3 +32,4 @@ int foo ()
>  }
>
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { 
> ! vect_strided2 } } } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-10.c 
> b/gcc/testsuite/gcc.dg/vect/vect-10.c
> index ba66939cca3..26c16c5d6f0 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-10.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-10.c
> @@ -1,4 +1,5 @@
>  /* { dg-do compile } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>  /* { dg-require-effective-target vect_int } */
>
>  #define N 16
> @@ -23,3 +24,4 @@ int foo ()
>  }
>
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { 
> ! vect_strided2 } } } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-100.c 
> b/gcc/testsuite/gcc.dg/vect/vect-100.c
> index 9a4d4de0671..ccce2f4fdcc 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-100.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-100.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_int } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdlib.h>
>  #include <stdarg.h>
> @@ -77,3 +78,4 @@ int main (void)
>  /* Requires versioning.  */
>  /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 0 "vect" } } */
>
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-103.c 
> b/gcc/testsuite/gcc.dg/vect/vect-103.c
> index d03562f7cdd..5911214dbe8 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-103.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-103.c
> @@ -1,5 +1,5 @@
>  /* Disabling epilogues until we find a better way to deal with scans.  */
> -/* { dg-additional-options "--param vect-epilogues-nomask=0" } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks --param 
> vect-epilogues-nomask=0" } */
>  /* { dg-require-effective-target vect_int } */
>
>  #include <stdlib.h>
> @@ -58,3 +58,4 @@ int main (void)
>  }
>
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-104.c 
> b/gcc/testsuite/gcc.dg/vect/vect-104.c
> index a77c98735eb..a25fdf3ed13 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-104.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-104.c
> @@ -1,5 +1,5 @@
>  /* { dg-require-effective-target vect_int } */
> -/* { dg-additional-options "--param max-completely-peel-times=1" } */
> +/* { dg-additional-options "--param max-completely-peel-times=1 
> -fdump-tree-optimized-details-blocks" } */
>
>  #include <stdlib.h>
>  #include <stdarg.h>
> @@ -65,3 +65,4 @@ int main (void)
>  /* { dg-final { scan-tree-dump-times "possible dependence between data-refs" 
> 1 "vect" { target { ! vect_multiple_sizes } } } } */
>  /* { dg-final { scan-tree-dump "possible dependence between data-refs" 
> "vect" { target vect_multiple_sizes } } } */
>
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-105-big-array.c 
> b/gcc/testsuite/gcc.dg/vect/vect-105-big-array.c
> index 433565bfd4d..921fb85bf8e 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-105-big-array.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-105-big-array.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_int } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdlib.h>
>  #include <stdarg.h>
> @@ -95,3 +96,4 @@ int main (void)
>  /* { dg-final { scan-tree-dump-times "Alignment of access forced using 
> versioning" 2 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } } 
> } */
>  /* { dg-final { scan-tree-dump-times "possible dependence between data-refs" 
> 0 "vect" } } */
>
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-105.c 
> b/gcc/testsuite/gcc.dg/vect/vect-105.c
> index 17b6e89d8f6..30ac2f21c60 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-105.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-105.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_int } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdlib.h>
>  #include <stdarg.h>
> @@ -65,3 +66,4 @@ int main (void)
>  /* { dg-final { scan-tree-dump-times "Alignment of access forced using 
> versioning" 2 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } } 
> } */
>  /* { dg-final { scan-tree-dump-times "possible dependence between data-refs" 
> 0 "vect" } } */
>
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-106.c 
> b/gcc/testsuite/gcc.dg/vect/vect-106.c
> index 0171cfcdfa6..685d3576a17 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-106.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-106.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_int } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdlib.h>
>  #include <stdarg.h>
> @@ -70,3 +71,4 @@ int main (void)
>
>  /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */
>
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-107.c 
> b/gcc/testsuite/gcc.dg/vect/vect-107.c
> index aaab9c00345..d3e57fecaec 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-107.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-107.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_float } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -42,3 +43,4 @@ int main (void)
>
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target 
> vect_strided2 } } } */
>  /* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { xfail 
> vect_strided2 } } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-108.c 
> b/gcc/testsuite/gcc.dg/vect/vect-108.c
> index 4af6326e9c3..6a562a358e9 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-108.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-108.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_int_mult } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -38,3 +39,4 @@ int main (void)
>
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
>
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-109.c 
> b/gcc/testsuite/gcc.dg/vect/vect-109.c
> index fe7ea6c420f..9dc476f9de3 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-109.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-109.c
> @@ -1,5 +1,5 @@
>  /* Disabling epilogues until we find a better way to deal with scans.  */
> -/* { dg-additional-options "--param vect-epilogues-nomask=0" } */
> +/* { dg-additional-options "--param vect-epilogues-nomask=0 
> -fdump-tree-optimized-details-blocks" } */
>  /* { dg-skip-if "" { vect_no_align } } */
>  /* { dg-require-effective-target vect_int } */
>  /* { dg-add-options bind_pic_locally } */
> @@ -80,3 +80,4 @@ int main (void)
>  /* { dg-final { scan-tree-dump-times "unsupported unaligned access" 2 "vect" 
> { xfail vect_element_align } } } */
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 3 
> "vect" { target vect_element_align xfail { ! vect_unaligned_possible } } } } 
> */
>
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-11.c 
> b/gcc/testsuite/gcc.dg/vect/vect-11.c
> index 044fc5edc2d..0a6d7b4cb37 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-11.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-11.c
> @@ -1,5 +1,6 @@
>  /* { dg-require-effective-target vect_int } */
>  /* { dg-require-effective-target vect_int_mult } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -39,3 +40,4 @@ int main (void)
>  }
>
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-110.c 
> b/gcc/testsuite/gcc.dg/vect/vect-110.c
> index 47c6456107d..cf25da86d38 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-110.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-110.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_float } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -37,3 +38,4 @@ int main (void)
>  /* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" } } */
>
>
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-112-big-array.c 
> b/gcc/testsuite/gcc.dg/vect/vect-112-big-array.c
> index a99a590d9ac..a673fc605d9 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-112-big-array.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-112-big-array.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_int } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -43,3 +44,4 @@ int main (void)
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target 
> vect_unpack } } } */
>
>
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-112.c 
> b/gcc/testsuite/gcc.dg/vect/vect-112.c
> index 44e2cb270c4..6b18299c06b 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-112.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-112.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_int } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -36,3 +37,4 @@ int main (void)
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target 
> vect_unpack } } } */
>
>
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-113.c 
> b/gcc/testsuite/gcc.dg/vect/vect-113.c
> index a9d45ce9fcc..e6cb727db22 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-113.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-113.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_float } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -33,3 +34,4 @@ int main (void)
>  }
>
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target 
> powerpc*-*-* i?86-*-* x86_64-*-* } } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-114.c 
> b/gcc/testsuite/gcc.dg/vect/vect-114.c
> index 557b44110a0..a67ef563094 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-114.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-114.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_float } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -40,3 +41,4 @@ int main (void)
>  /* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target 
> { ! vect_perm } xfail { aarch64_sve && vect_variable_length } } } } */
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target 
> vect_perm } } } */
>
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-115.c 
> b/gcc/testsuite/gcc.dg/vect/vect-115.c
> index 0502d15ed3e..1fede0a6fd5 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-115.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-115.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_int } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -74,3 +75,4 @@ int main (void)
>  /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */
>
>
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-116.c 
> b/gcc/testsuite/gcc.dg/vect/vect-116.c
> index d4aa069772e..2e14f7d477c 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-116.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-116.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_int } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>  /* Assuming we can vectorize char multiplication, here's an execute test.  */
>
>  #include <stdarg.h>
> @@ -30,3 +31,4 @@ int main()
>    return 0;
>  }
>
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-117.c 
> b/gcc/testsuite/gcc.dg/vect/vect-117.c
> index 22f8e011872..b6a981e4b1b 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-117.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-117.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_int } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -59,3 +60,4 @@ int main (void)
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
>  /* { dg-final { scan-tree-dump-times "possible dependence between data-refs" 
> 0 "vect" } } */
>
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-118.c 
> b/gcc/testsuite/gcc.dg/vect/vect-118.c
> index 01ae828bd19..71201d1c599 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-118.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-118.c
> @@ -1,5 +1,6 @@
>  /* { dg-do compile } */
>  /* { dg-require-effective-target vect_int } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  void f(short * __restrict__ a, short * __restrict__ b, short * __restrict__ 
> x)
>  {
> @@ -9,3 +10,4 @@ void f(short * __restrict__ a, short * __restrict__ b, short 
> * __restrict__ x)
>  }
>
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-119.c 
> b/gcc/testsuite/gcc.dg/vect/vect-119.c
> index 29a9c51cd29..028804ae217 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-119.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-119.c
> @@ -1,5 +1,5 @@
>  /* Disabling epilogues until we find a better way to deal with scans.  */
> -/* { dg-additional-options "--param vect-epilogues-nomask=0" } */
> +/* { dg-additional-options "--param vect-epilogues-nomask=0 
> -fdump-tree-optimized-details-blocks" } */
>  /* { dg-do compile } */
>  /* { dg-require-effective-target vect_int } */
>
> @@ -28,3 +28,4 @@ unsigned int foo (const unsigned int x[OUTER][INNER][2])
>  }
>
>  /* { dg-final { scan-tree-dump-times "Detected interleaving load of size 2" 
> 1 "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-11a.c 
> b/gcc/testsuite/gcc.dg/vect/vect-11a.c
> index 4f1e15e7429..c289ace6ba8 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-11a.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-11a.c
> @@ -1,5 +1,6 @@
>  /* { dg-require-effective-target vect_int } */
>  /* { dg-require-effective-target vect_int_mult } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -62,3 +63,4 @@ int main (void)
>  }
>
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-12.c 
> b/gcc/testsuite/gcc.dg/vect/vect-12.c
> index b095170f008..132e2fb2b0a 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-12.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-12.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_int } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -41,3 +42,4 @@ int main (void)
>  }
>
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-120.c 
> b/gcc/testsuite/gcc.dg/vect/vect-120.c
> index cafc9b4092a..e7ef76c7d44 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-120.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-120.c
> @@ -2,6 +2,7 @@
>  /* { dg-require-effective-target vect_float } */
>  /* { dg-require-effective-target vect_shift } */
>  /* { dg-require-effective-target vect_floatint_cvt } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  static inline float
>  i2f(int x)
> @@ -34,3 +35,4 @@ tV()
>  }
>
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-121.c 
> b/gcc/testsuite/gcc.dg/vect/vect-121.c
> index a8f25591021..d820215ca67 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-121.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-121.c
> @@ -1,5 +1,6 @@
>  /* { dg-do compile } */
>  /* { dg-require-effective-target vect_float } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  float *x;
>  float parm;
> @@ -15,3 +16,4 @@ test (int start, int end)
>  }
>
>  /* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-122.c 
> b/gcc/testsuite/gcc.dg/vect/vect-122.c
> index 04dae679647..cdc4d7b65d0 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-122.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-122.c
> @@ -1,3 +1,4 @@
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>  #include "tree-vect.h"
>
>  #ifndef N
> @@ -56,3 +57,4 @@ main ()
>    return 0;
>  }
>
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-123.c 
> b/gcc/testsuite/gcc.dg/vect/vect-123.c
> index 210da1e4bca..20edd7ba263 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-123.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-123.c
> @@ -1,5 +1,6 @@
>  /* { dg-do compile } */
>  /* { dg-require-effective-target vect_int } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  int x[4092];
>  int y[1024];
> @@ -12,3 +13,4 @@ void foo (int s)
>  }
>
>  /* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-124.c 
> b/gcc/testsuite/gcc.dg/vect/vect-124.c
> index c720648aadd..a91056dd1d6 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-124.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-124.c
> @@ -1,3 +1,4 @@
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>  #include "tree-vect.h"
>
>  #ifndef N
> @@ -27,3 +28,4 @@ main ()
>    return 0;
>  }
>
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-126.c 
> b/gcc/testsuite/gcc.dg/vect/vect-126.c
> index f01b95e1920..02d1f1e1970 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-126.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-126.c
> @@ -1,5 +1,6 @@
>  /* PR tree-optimization/66718 */
>  /* { dg-do compile } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  int *a[1024], b[1024];
>  struct S { int u, v, w, x; };
> @@ -61,3 +62,4 @@ f6 (void)
>  }
>
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 7 
> "vect" { target { i?86-*-* x86_64-*-* } } } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-13.c 
> b/gcc/testsuite/gcc.dg/vect/vect-13.c
> index 5d902924ec2..57ca2b2908e 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-13.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-13.c
> @@ -1,5 +1,6 @@
>  /* { dg-require-effective-target vect_int } */
>  /* { dg-add-options bind_pic_locally } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -40,3 +41,4 @@ int main (void)
>
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail 
> vect_no_int_min_max } } } */
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 
> "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-14.c 
> b/gcc/testsuite/gcc.dg/vect/vect-14.c
> index 1640220a134..36a643f5dfd 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-14.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-14.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_int } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -34,3 +35,4 @@ int main (void)
>  }
>
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-15-big-array.c 
> b/gcc/testsuite/gcc.dg/vect/vect-15-big-array.c
> index 5313eae598b..e724645f94f 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-15-big-array.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-15-big-array.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_int } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -42,3 +43,4 @@ int main (void)
>  }
>
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target 
> { vect_perm && vect_hw_misalign } } } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-15.c 
> b/gcc/testsuite/gcc.dg/vect/vect-15.c
> index 178bc4404c4..103c4b6dae8 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-15.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-15.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_int } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -36,3 +37,4 @@ int main (void)
>  }
>
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target 
> { vect_perm && vect_hw_misalign } } } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-17.c 
> b/gcc/testsuite/gcc.dg/vect/vect-17.c
> index 471a82336cf..31a7795d7a3 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-17.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-17.c
> @@ -1,5 +1,6 @@
>  /* { dg-require-effective-target vect_int } */
>  /* { dg-add-options bind_pic_locally } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -127,3 +128,4 @@ int main (void)
>
>  /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { xfail 
> vect_no_bitwise } } } */
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 
> "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-18.c 
> b/gcc/testsuite/gcc.dg/vect/vect-18.c
> index 28b2941e581..bda1c4f25e3 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-18.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-18.c
> @@ -1,5 +1,6 @@
>  /* { dg-require-effective-target vect_int } */
>  /* { dg-add-options bind_pic_locally } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -126,3 +127,4 @@ int main (void)
>
>  /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { xfail 
> vect_no_bitwise } } } */
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 
> "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-19.c 
> b/gcc/testsuite/gcc.dg/vect/vect-19.c
> index 27c6dc835a6..cbbd99c89a3 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-19.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-19.c
> @@ -1,3 +1,4 @@
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>  /* { dg-require-effective-target vect_int } */
>  /* { dg-add-options bind_pic_locally } */
>
> @@ -126,3 +127,4 @@ int main (void)
>
>  /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { xfail 
> vect_no_bitwise } } } */
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 
> "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-2-big-array.c 
> b/gcc/testsuite/gcc.dg/vect/vect-2-big-array.c
> index 162cb54b58d..839798c9ae8 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-2-big-array.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-2-big-array.c
> @@ -1,5 +1,6 @@
>  /* { dg-require-effective-target vect_int } */
>  /* { dg-add-options bind_pic_locally } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -44,3 +45,4 @@ int main (void)
>
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 
> "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-2.c 
> b/gcc/testsuite/gcc.dg/vect/vect-2.c
> index d975668cbd0..8c759a5ecd6 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-2.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-2.c
> @@ -1,5 +1,6 @@
>  /* { dg-require-effective-target vect_int } */
>  /* { dg-add-options bind_pic_locally } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -38,3 +39,4 @@ int main (void)
>
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 
> "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-20.c 
> b/gcc/testsuite/gcc.dg/vect/vect-20.c
> index 8d759f3c6a6..5b71dee6783 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-20.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-20.c
> @@ -1,5 +1,6 @@
>  /* { dg-require-effective-target vect_int } */
>  /* { dg-add-options bind_pic_locally } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -98,3 +99,4 @@ int main (void)
>
>  /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { xfail 
> vect_no_bitwise } } } */
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 
> "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-21.c 
> b/gcc/testsuite/gcc.dg/vect/vect-21.c
> index ab77df6ef88..83cade50d1f 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-21.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-21.c
> @@ -1,5 +1,6 @@
>  /* { dg-require-effective-target vect_int } */
>  /* { dg-add-options bind_pic_locally } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -127,3 +128,4 @@ int main (void)
>  /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { target 
> vect_condition } } } */
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 
> "vect" } } */
>
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-22.c 
> b/gcc/testsuite/gcc.dg/vect/vect-22.c
> index 78dc1ce91de..c4d8aaa48f5 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-22.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-22.c
> @@ -1,6 +1,7 @@
>  /* { dg-require-effective-target vect_int } */
>  /* { dg-require-effective-target vect_float } */
>  /* { dg-add-options bind_pic_locally } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -124,3 +125,4 @@ int main (void)
>  /* { dg-final { scan-tree-dump-times "vectorized 4 loops" 1 "vect" } } */
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 
> "vect" } } */
>
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-23.c 
> b/gcc/testsuite/gcc.dg/vect/vect-23.c
> index 69e0848c8ec..5bedc82cefb 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-23.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-23.c
> @@ -1,5 +1,6 @@
>  /* { dg-require-effective-target vect_int } */
>  /* { dg-require-effective-target vect_condition } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -126,3 +127,4 @@ int main (void)
>
>  /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" } } */
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 
> "vect" { xfail { ! vect_align_stack_vars } } } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-24.c 
> b/gcc/testsuite/gcc.dg/vect/vect-24.c
> index fa4c0620d29..c64e5cf5731 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-24.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-24.c
> @@ -1,6 +1,7 @@
>  /* Disabling epilogues until we find a better way to deal with scans.  */
>  /* { dg-additional-options "--param vect-epilogues-nomask=0" } */
>  /* { dg-require-effective-target vect_int } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -128,3 +129,4 @@ int main (void)
>     bitwise or.  */
>  /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { xfail { 
> ! vect_condition } } } } */
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 
> "vect" { xfail { ! vect_align_stack_vars } } } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-25.c 
> b/gcc/testsuite/gcc.dg/vect/vect-25.c
> index 904eea8a17b..712bf0e3f1b 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-25.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-25.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_int } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -52,3 +53,4 @@ int main (void)
>
>  /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 
> "vect" { xfail { ! vect_align_stack_vars } } } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-26.c 
> b/gcc/testsuite/gcc.dg/vect/vect-26.c
> index 8a141f38400..3d76b223b7d 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-26.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-26.c
> @@ -1,5 +1,5 @@
>  /* Disabling epilogues until we find a better way to deal with scans.  */
> -/* { dg-additional-options "--param vect-epilogues-nomask=0" } */
> +/* { dg-additional-options "--param vect-epilogues-nomask=0 
> -fdump-tree-optimized-details-blocks" } */
>  /* { dg-require-effective-target vect_int } */
>
>  #include <stdarg.h>
> @@ -40,3 +40,4 @@ int main (void)
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 
> "vect" { xfail { ! vect_align_stack_vars } } } } */
>  /* { dg-final { scan-tree-dump-times "Alignment of access forced using 
> peeling" 1 "vect" { xfail { vect_element_align_preferred || { ! 
> vect_align_stack_vars } } } } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-27.c 
> b/gcc/testsuite/gcc.dg/vect/vect-27.c
> index ac86b21aceb..8e32d703906 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-27.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-27.c
> @@ -1,5 +1,5 @@
>  /* Disabling epilogues until we find a better way to deal with scans.  */
> -/* { dg-additional-options "--param vect-epilogues-nomask=0" } */
> +/* { dg-additional-options "--param vect-epilogues-nomask=0 
> -fdump-tree-optimized-details-blocks" } */
>  /* { dg-require-effective-target vect_int } */
>  /* { dg-add-options bind_pic_locally } */
>
> @@ -50,3 +50,4 @@ int main (void)
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target 
> { vect_no_align && { ! vect_hw_misalign } } } } } */
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 
> "vect" { xfail { ! vect_unaligned_possible } } } } */
>  /* { dg-final { scan-tree-dump-times "Alignment of access forced using 
> peeling" 0 "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-28.c 
> b/gcc/testsuite/gcc.dg/vect/vect-28.c
> index e213df1a465..47301459e21 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-28.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-28.c
> @@ -1,5 +1,5 @@
>  /* { dg-require-effective-target vect_int } */
> -/* { dg-additional-options "--param vect-max-peeling-for-alignment=0" } */
> +/* { dg-additional-options "--param vect-max-peeling-for-alignment=0 
> -fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -41,3 +41,4 @@ int main (void)
>
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  } } */
>  /* { dg-final { scan-tree-dump-times "Alignment of access forced using 
> versioning" 1 "vect" { target { {! vector_alignment_reachable} && {! 
> vect_hw_misalign} } } } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-29.c 
> b/gcc/testsuite/gcc.dg/vect/vect-29.c
> index bbd446dfe63..0d98417cef9 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-29.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-29.c
> @@ -1,5 +1,5 @@
>  /* Disabling epilogues until we find a better way to deal with scans.  */
> -/* { dg-additional-options "--param vect-epilogues-nomask=0" } */
> +/* { dg-additional-options "--param vect-epilogues-nomask=0 
> -fdump-tree-optimized-details-blocks" } */
>  /* { dg-require-effective-target vect_int } */
>  /* { dg-add-options bind_pic_locally } */
>
> @@ -56,3 +56,4 @@ int main (void)
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 
> "vect" { xfail { ! vect_unaligned_possible } } } } */
>  /* { dg-final { scan-tree-dump-times "Alignment of access forced using 
> peeling" 0 "vect" } } */
>  /* { dg-final { scan-tree-dump-times "Alignment of access forced using 
> versioning." 1 "vect" {target { vect_no_align && { ! vect_hw_misalign } } } } 
> } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-3.c 
> b/gcc/testsuite/gcc.dg/vect/vect-3.c
> index 6fc6557cf9f..d87fddcfea8 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-3.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-3.c
> @@ -1,6 +1,7 @@
>  /* { dg-require-effective-target vect_int } */
>  /* { dg-require-effective-target vect_float } */
>  /* { dg-add-options bind_pic_locally } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -49,3 +50,4 @@ int main (void)
>
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 
> "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-30.c 
> b/gcc/testsuite/gcc.dg/vect/vect-30.c
> index 71f7a2d169f..fbc28fd7b00 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-30.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-30.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_float } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -62,3 +63,4 @@ int main (void)
>  }
>
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-31-big-array.c 
> b/gcc/testsuite/gcc.dg/vect/vect-31-big-array.c
> index 5621eb4d4ba..3568dda7cdc 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-31-big-array.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-31-big-array.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_int } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -87,3 +88,4 @@ int main (void)
>  }
>
>  /* { dg-final { scan-tree-dump-times "vectorized 4 loops" 1 "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-31.c 
> b/gcc/testsuite/gcc.dg/vect/vect-31.c
> index 3f7d00c1748..93eaf0596c7 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-31.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-31.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_int } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -87,3 +88,4 @@ int main (void)
>  }
>
>  /* { dg-final { scan-tree-dump-times "vectorized 4 loops" 1 "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-32-big-array.c 
> b/gcc/testsuite/gcc.dg/vect/vect-32-big-array.c
> index 3e1403bbe96..2d11d86f7c1 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-32-big-array.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-32-big-array.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_int } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -37,3 +38,4 @@ int main (void)
>
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 
> "vect" { xfail { ! vect_align_stack_vars } } } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-32-chars.c 
> b/gcc/testsuite/gcc.dg/vect/vect-32-chars.c
> index 0af5d2d19b4..c2e29b8fb29 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-32-chars.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-32-chars.c
> @@ -1,4 +1,5 @@
>  /* { dg-do compile } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>  /* { dg-additional-options "-mavx512bw -mavx512vl" { target { i?86-*-* 
> x86_64-*-* } } } */
>
>  char a[32];
> @@ -14,3 +15,4 @@ void test()
>  }
>
>  /* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" { target { 
> i?86-*-* x86_64-*-* } } } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-32.c 
> b/gcc/testsuite/gcc.dg/vect/vect-32.c
> index 2684cf2e0d3..08f75e9a4d4 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-32.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-32.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_int } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -41,3 +42,4 @@ int main (void)
>
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 
> "vect" { xfail { ! vect_align_stack_vars } } } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-33-big-array.c 
> b/gcc/testsuite/gcc.dg/vect/vect-33-big-array.c
> index c1aa399a240..ba4616e4953 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-33-big-array.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-33-big-array.c
> @@ -1,6 +1,6 @@
>  /* { dg-do compile } */
>  /* { dg-require-effective-target vect_int } */
> -/* { dg-additional-options "--param vect-max-peeling-for-alignment=0" } */
> +/* { dg-additional-options "--param vect-max-peeling-for-alignment=0 
> -fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -40,3 +40,4 @@ int main (void)
>
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  } } */
>  /* { dg-final { scan-tree-dump-times "Alignment of access forced using 
> versioning" 1 "vect" { target { {! vector_alignment_reachable} && {! 
> vect_hw_misalign} } } } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-33.c 
> b/gcc/testsuite/gcc.dg/vect/vect-33.c
> index e215052ff77..6a2acb417fa 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-33.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-33.c
> @@ -1,5 +1,6 @@
>  /* { dg-do compile } */
>  /* { dg-require-effective-target vect_int } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -40,3 +41,4 @@ int main (void)
>  /* { dg-final { scan-tree-dump "Vectorizing an unaligned access" "vect" { 
> target { { { ! powerpc*-*-* } && vect_hw_misalign } && { { ! vect64 } || 
> vect_multiple_sizes } } xfail { ! vect_unaligned_possible } } } }  */
>  /* { dg-final { scan-tree-dump "Alignment of access forced using peeling" 
> "vect" { target { vector_alignment_reachable && { vect64 && {! 
> vect_multiple_sizes} } } } } } */
>  /* { dg-final { scan-tree-dump-times "Alignment of access forced using 
> versioning" 1 "vect" { target { { {! vector_alignment_reachable} || {! 
> vect64} } && {! vect_hw_misalign} } } } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-34-big-array.c 
> b/gcc/testsuite/gcc.dg/vect/vect-34-big-array.c
> index 0aa6d507a82..529823b9f75 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-34-big-array.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-34-big-array.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_int } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -43,3 +44,4 @@ int main (void)
>  }
>
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-34.c 
> b/gcc/testsuite/gcc.dg/vect/vect-34.c
> index 9cc590253c7..2bc63294f18 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-34.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-34.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_int } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -38,3 +39,4 @@ int main (void)
>  }
>
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-35-big-array.c 
> b/gcc/testsuite/gcc.dg/vect/vect-35-big-array.c
> index 28a99c910fd..7cd28704a33 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-35-big-array.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-35-big-array.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_int } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -44,3 +45,4 @@ int main (void)
>
>
>  /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect"  { xfail 
> { ia64-*-* sparc*-*-* } } } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-35.c 
> b/gcc/testsuite/gcc.dg/vect/vect-35.c
> index a7ec0f16d4c..02b9b90e077 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-35.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-35.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_int } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -44,3 +45,4 @@ int main (void)
>
>
>  /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect"  { xfail 
> { ia64-*-* sparc*-*-* } } } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-36-big-array.c 
> b/gcc/testsuite/gcc.dg/vect/vect-36-big-array.c
> index d40fcb6d992..7a835513eb4 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-36-big-array.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-36-big-array.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_int } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -44,3 +45,4 @@ int main (void)
>  }
>
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-36.c 
> b/gcc/testsuite/gcc.dg/vect/vect-36.c
> index 64bc7fe1809..8b32a03ffc3 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-36.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-36.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_int } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -44,3 +45,4 @@ int main (void)
>  }
>
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-38.c 
> b/gcc/testsuite/gcc.dg/vect/vect-38.c
> index 01d984c61b8..cd13ad881d3 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-38.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-38.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_double } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -37,3 +38,4 @@ int main (void)
>
>
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-4.c 
> b/gcc/testsuite/gcc.dg/vect/vect-4.c
> index b0cc45be7de..818fdcafa6f 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-4.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-4.c
> @@ -1,5 +1,6 @@
>  /* { dg-require-effective-target vect_float } */
>  /* { dg-add-options bind_pic_locally } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -39,3 +40,4 @@ int main (void)
>
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 
> "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-40.c 
> b/gcc/testsuite/gcc.dg/vect/vect-40.c
> index c74703268f9..87b92a7fcd9 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-40.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-40.c
> @@ -1,5 +1,6 @@
>  /* { dg-require-effective-target vect_float } */
>  /* { dg-add-options double_vectors } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -60,3 +61,4 @@ int main (void)
>
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"} } */
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 
> "vect" { xfail { ! vect_align_stack_vars } } } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-42.c 
> b/gcc/testsuite/gcc.dg/vect/vect-42.c
> index 086cbf20c0a..85c8f47aae0 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-42.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-42.c
> @@ -1,5 +1,5 @@
>  /* Disabling epilogues until we find a better way to deal with scans.  */
> -/* { dg-additional-options "--param vect-epilogues-nomask=0" } */
> +/* { dg-additional-options "--param vect-epilogues-nomask=0 
> -fdump-tree-optimized-details-blocks" } */
>  /* { dg-require-effective-target vect_float } */
>  /* { dg-add-options double_vectors } */
>
> @@ -71,3 +71,4 @@ int main (void)
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 4 
> "vect" { xfail { vect_no_align || { { !  vector_alignment_reachable } || 
> vect_element_align  } } } } }  */
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 3 
> "vect" { target vect_element_align xfail { ! { vect_unaligned_possible && 
> vect_align_stack_vars } } } } } */
>  /* { dg-final { scan-tree-dump-times "Alignment of access forced using 
> peeling" 1 "vect" { xfail { vect_no_align || { { ! vector_alignment_reachable 
> } || vect_element_align } } } } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-44.c 
> b/gcc/testsuite/gcc.dg/vect/vect-44.c
> index f7f1fd28665..1b19de5d365 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-44.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-44.c
> @@ -1,5 +1,5 @@
>  /* Disabling epilogues until we find a better way to deal with scans.  */
> -/* { dg-additional-options "--param vect-epilogues-nomask=0" } */
> +/* { dg-additional-options "--param vect-epilogues-nomask=0 
> -fdump-tree-optimized-details-blocks" } */
>  /* { dg-require-effective-target vect_float } */
>  /* { dg-additional-options "--param vect-max-peeling-for-alignment=0" } */
>
> @@ -71,3 +71,4 @@ int main (void)
>  /* { dg-final { scan-tree-dump-times "Alignment of access forced using 
> peeling" 0 "vect" { xfail { { vect_no_align && { ! vect_hw_misalign } } || {! 
> vector_alignment_reachable} } } } } */
>  /* { dg-final { scan-tree-dump-times "Alignment of access forced using 
> versioning." 3 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } 
> } } */
>  /* { dg-final { scan-tree-dump-times "Alignment of access forced using 
> versioning." 1 "vect" { target { {! vector_alignment_reachable} && {{! 
> vect_no_align} && {! vect_hw_misalign} } } } } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-46.c 
> b/gcc/testsuite/gcc.dg/vect/vect-46.c
> index 185ac1424f9..3981d2e1301 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-46.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-46.c
> @@ -1,5 +1,6 @@
>  /* { dg-require-effective-target vect_float } */
>  /* { dg-add-options double_vectors } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -62,3 +63,4 @@ int main (void)
>
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 
> "vect" { xfail { ! vect_align_stack_vars } } } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-48.c 
> b/gcc/testsuite/gcc.dg/vect/vect-48.c
> index b29fe47635a..f4d6f0c1464 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-48.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-48.c
> @@ -1,5 +1,5 @@
>  /* Disabling epilogues until we find a better way to deal with scans.  */
> -/* { dg-additional-options "--param vect-epilogues-nomask=0" } */
> +/* { dg-additional-options "--param vect-epilogues-nomask=0 
> -fdump-tree-optimized-details-blocks" } */
>  /* { dg-require-effective-target vect_float } */
>  /* { dg-add-options double_vectors } */
>
> @@ -61,3 +61,4 @@ int main (void)
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 
> "vect" { target vect_align_stack_vars xfail { ! vect_unaligned_possible } } } 
> } */
>  /* { dg-final { scan-tree-dump-times "Alignment of access forced using 
> peeling" 0 "vect" } } */
>  /* { dg-final { scan-tree-dump-times "Alignment of access forced using 
> versioning." 2 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } 
> } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-5.c 
> b/gcc/testsuite/gcc.dg/vect/vect-5.c
> index 17f3b2fac9a..6b91f8aa406 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-5.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-5.c
> @@ -1,5 +1,6 @@
>  /* { dg-require-effective-target vect_float } */
>  /* { dg-add-options bind_pic_locally } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -56,3 +57,4 @@ int main (void)
>
>  /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 
> "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-50.c 
> b/gcc/testsuite/gcc.dg/vect/vect-50.c
> index f43676896af..9aec47a99da 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-50.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-50.c
> @@ -1,5 +1,5 @@
>  /* Disabling epilogues until we find a better way to deal with scans.  */
> -/* { dg-additional-options "--param vect-epilogues-nomask=0" } */
> +/* { dg-additional-options "--param vect-epilogues-nomask=0 
> -fdump-tree-optimized-details-blocks" } */
>  /* { dg-require-effective-target vect_float } */
>  /* { dg-additional-options "--param vect-max-peeling-for-alignment=0" } */
>
> @@ -67,3 +67,4 @@ int main (void)
>  /* { dg-final { scan-tree-dump-times "Alignment of access forced using 
> peeling" 0 "vect" { xfail { { vect_no_align && { ! vect_hw_misalign } } || {! 
> vector_alignment_reachable} } } } } */
>  /* { dg-final { scan-tree-dump-times "Alignment of access forced using 
> versioning." 3 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } 
> } } */
>  /* { dg-final { scan-tree-dump-times "Alignment of access forced using 
> versioning." 1 "vect" { target { {! vector_alignment_reachable} && { {! 
> vect_no_align } && {! vect_hw_misalign } } } } } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-52.c 
> b/gcc/testsuite/gcc.dg/vect/vect-52.c
> index c20a4be2ede..78de172f2e2 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-52.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-52.c
> @@ -1,7 +1,7 @@
>  /* Disabling epilogues until we find a better way to deal with scans.  */
> -/* { dg-additional-options "--param vect-epilogues-nomask=0" } */
>  /* { dg-require-effective-target vect_float } */
>  /* { dg-add-options double_vectors } */
> +/* { dg-additional-options "--param vect-epilogues-nomask=0 
> -fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -62,3 +62,4 @@ int main (void)
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 
> "vect" { target vect_align_stack_vars xfail { ! vect_unaligned_possible } } } 
> } */
>  /* { dg-final { scan-tree-dump-times "Alignment of access forced using 
> peeling" 0 "vect" } } */
>  /* { dg-final { scan-tree-dump-times "Alignment of access forced using 
> versioning." 2 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } 
> } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-54.c 
> b/gcc/testsuite/gcc.dg/vect/vect-54.c
> index 2b236e48e19..d7edf6a1471 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-54.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-54.c
> @@ -1,5 +1,5 @@
>  /* Disabling epilogues until we find a better way to deal with scans.  */
> -/* { dg-additional-options "--param vect-epilogues-nomask=0" } */
> +/* { dg-additional-options "--param vect-epilogues-nomask=0 
> -fdump-tree-optimized-details-blocks" } */
>  /* { dg-require-effective-target vect_float } */
>  /* { dg-add-options double_vectors } */
>
> @@ -64,3 +64,4 @@ int main (void)
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 
> "vect" { xfail { ! vect_align_stack_vars } } } } */
>  /* { dg-final { scan-tree-dump-times "Alignment of access forced using 
> peeling" 1 "vect" { xfail vect_element_align_preferred } } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-56.c 
> b/gcc/testsuite/gcc.dg/vect/vect-56.c
> index c914126ece5..7cc2381adea 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-56.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-56.c
> @@ -1,5 +1,5 @@
>  /* Disabling epilogues until we find a better way to deal with scans.  */
> -/* { dg-additional-options "--param vect-epilogues-nomask=0" } */
> +/* { dg-additional-options "--param vect-epilogues-nomask=0 
> -fdump-tree-optimized-details-blocks" } */
>  /* { dg-require-effective-target vect_float } */
>
>  #include <stdarg.h>
> @@ -74,3 +74,4 @@ int main (void)
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 
> "vect" { target { vect_element_align } xfail { ! vect_unaligned_possible } } 
> } } */
>  /* { dg-final { scan-tree-dump-times "Alignment of access forced using 
> peeling" 0 "vect" { target { { ! vect_element_align } || 
> vect_element_align_preferred} } } } */
>  /* { dg-final { scan-tree-dump-times "Alignment of access forced using 
> peeling" 1 "vect" { target { vect_element_align && { ! 
> vect_element_align_preferred } } } } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-58.c 
> b/gcc/testsuite/gcc.dg/vect/vect-58.c
> index da4f9740e33..2be206796a9 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-58.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-58.c
> @@ -1,5 +1,5 @@
>  /* Disabling epilogues until we find a better way to deal with scans.  */
> -/* { dg-additional-options "--param vect-epilogues-nomask=0" } */
> +/* { dg-additional-options "--param vect-epilogues-nomask=0 
> -fdump-tree-optimized-details-blocks" } */
>  /* { dg-require-effective-target vect_float } */
>
>  #include <stdarg.h>
> @@ -62,3 +62,4 @@ int main (void)
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 
> "vect" } } */
>  /* { dg-final { scan-tree-dump-times "Alignment of access forced using 
> peeling" 1 "vect" { xfail vect_element_align_preferred } } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-6-big-array.c 
> b/gcc/testsuite/gcc.dg/vect/vect-6-big-array.c
> index c5de86b167a..5d4ba0d51cc 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-6-big-array.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-6-big-array.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_float } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -71,3 +72,4 @@ int main (void)
>  /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 
> "vect" { target { { vect_aligned_arrays } && {! vect_sizes_32B_16B} } } } } */
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 
> "vect" { target { {! vect_aligned_arrays } && {vect_sizes_32B_16B} } } } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-6.c 
> b/gcc/testsuite/gcc.dg/vect/vect-6.c
> index c3e6336bb43..24305dbf0c4 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-6.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-6.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_float } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -56,3 +57,4 @@ int main (void)
>  /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 
> "vect" { target { { vect_aligned_arrays } && {! vect_sizes_32B_16B} } } } } */
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 
> "vect" { target { {! vect_aligned_arrays } && {vect_sizes_32B_16B} } } } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-60.c 
> b/gcc/testsuite/gcc.dg/vect/vect-60.c
> index 121c503c63a..ed7fe31cd11 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-60.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-60.c
> @@ -1,5 +1,5 @@
>  /* Disabling epilogues until we find a better way to deal with scans.  */
> -/* { dg-additional-options "--param vect-epilogues-nomask=0" } */
> +/* { dg-additional-options "--param vect-epilogues-nomask=0 
> -fdump-tree-optimized-details-blocks" } */
>  /* { dg-require-effective-target vect_float } */
>
>  #include <stdarg.h>
> @@ -75,3 +75,4 @@ int main (void)
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 
> "vect" { target { vect_element_align } xfail { ! vect_unaligned_possible } } 
> } } */
>  /* { dg-final { scan-tree-dump-times "Alignment of access forced using 
> peeling" 0 "vect" { target { { ! vect_element_align } || 
> vect_element_align_preferred } } } } */
>  /* { dg-final { scan-tree-dump-times "Alignment of access forced using 
> peeling" 1 "vect" { target { vect_element_align && { ! 
> vect_element_align_preferred } } } } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-62.c 
> b/gcc/testsuite/gcc.dg/vect/vect-62.c
> index abd3d700668..04935bef8aa 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-62.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-62.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_int } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -66,3 +67,4 @@ int main (void)
>
>  /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 
> "vect" { xfail { ! vect_align_stack_vars } } } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-63.c 
> b/gcc/testsuite/gcc.dg/vect/vect-63.c
> index 8d002a5e3c3..58965b9c42c 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-63.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-63.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_int } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -43,3 +44,4 @@ int main (void)
>  }
>
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-64.c 
> b/gcc/testsuite/gcc.dg/vect/vect-64.c
> index 240b68f6d0d..c20cd50cdf7 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-64.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-64.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_int } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -83,3 +84,4 @@ int main (void)
>  }
>
>  /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-65.c 
> b/gcc/testsuite/gcc.dg/vect/vect-65.c
> index 9ac8ea4f013..9b6465b74b6 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-65.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-65.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_int } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -80,3 +81,4 @@ int main (void)
>  }
>
>  /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-66.c 
> b/gcc/testsuite/gcc.dg/vect/vect-66.c
> index ccb66bc8001..35282020820 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-66.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-66.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_int } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -93,3 +94,4 @@ int main (void)
>  }
>
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 3 "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-67.c 
> b/gcc/testsuite/gcc.dg/vect/vect-67.c
> index 12183a233c2..d4820c02ec2 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-67.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-67.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_int } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -50,3 +51,4 @@ int main (void)
>
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  } } */
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 
> "vect" { xfail { ! vect_align_stack_vars } } } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-68.c 
> b/gcc/testsuite/gcc.dg/vect/vect-68.c
> index 3012d88494d..d42117332fe 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-68.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-68.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_int } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -86,3 +87,4 @@ int main (void)
>  }
>
>  /* { dg-final { scan-tree-dump-times "vectorized 4 loops" 1 "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-7.c 
> b/gcc/testsuite/gcc.dg/vect/vect-7.c
> index c4556e321c6..bc3e471e01d 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-7.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-7.c
> @@ -1,5 +1,6 @@
>  /* { dg-require-effective-target vect_int } */
>  /* { dg-add-options bind_pic_locally } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -50,3 +51,4 @@ int main (void)
>
>  /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 
> "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-70.c 
> b/gcc/testsuite/gcc.dg/vect/vect-70.c
> index 793dbfb7481..81953dd4b91 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-70.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-70.c
> @@ -1,5 +1,5 @@
>  /* { dg-require-effective-target vect_int } */
> -/* { dg-additional-options "--param vect-max-peeling-for-alignment=0" } */
> +/* { dg-additional-options "--param vect-max-peeling-for-alignment=0 
> -fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -85,3 +85,4 @@ int main (void)
>
>  /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */
>  /* { dg-final { scan-tree-dump-times "Alignment of access forced using 
> versioning" 1 "vect" {target {{! vector_alignment_reachable} && {! 
> vect_hw_misalign} } } } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-71.c 
> b/gcc/testsuite/gcc.dg/vect/vect-71.c
> index 581473fa4a1..14dfa310230 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-71.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-71.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_int } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -37,3 +38,4 @@ int main (void)
>  }
>
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-72.c 
> b/gcc/testsuite/gcc.dg/vect/vect-72.c
> index 9e8e91b7ae6..d2154c2a9a6 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-72.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-72.c
> @@ -1,5 +1,5 @@
>  /* Disabling epilogues until we find a better way to deal with scans.  */
> -/* { dg-additional-options "--param vect-epilogues-nomask=0" } */
> +/* { dg-additional-options "--param vect-epilogues-nomask=0 
> -fdump-tree-optimized-details-blocks" } */
>  /* { dg-require-effective-target vect_int } */
>  /* { dg-add-options bind_pic_locally } */
>
> @@ -52,3 +52,4 @@ int main (void)
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { 
> vect_no_align && { ! vect_hw_misalign } } } } } */
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 
> "vect" { xfail { ! vect_unaligned_possible } } } } */
>  /* { dg-final { scan-tree-dump-times "Alignment of access forced using 
> peeling" 0 "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-73-big-array.c 
> b/gcc/testsuite/gcc.dg/vect/vect-73-big-array.c
> index 1c9d1fdaf9a..92c9a29d91f 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-73-big-array.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-73-big-array.c
> @@ -1,5 +1,6 @@
>  /* { dg-require-effective-target vect_int } */
>  /* { dg-add-options bind_pic_locally } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -46,3 +47,4 @@ int main (void)
>
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 
> "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-73.c 
> b/gcc/testsuite/gcc.dg/vect/vect-73.c
> index fdb49b86362..cc9010b67ac 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-73.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-73.c
> @@ -1,5 +1,6 @@
>  /* { dg-require-effective-target vect_int } */
>  /* { dg-add-options bind_pic_locally } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -40,3 +41,4 @@ int main (void)
>
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 
> "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-74-big-array.c 
> b/gcc/testsuite/gcc.dg/vect/vect-74-big-array.c
> index ba1ae63bd57..067405c2a85 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-74-big-array.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-74-big-array.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_float } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -61,3 +62,4 @@ int main (void)
>   dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" 
> { xfail vect_no_align } }
>   dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 
> 1 "vect" { xfail vect_no_align } }
>  */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-74.c 
> b/gcc/testsuite/gcc.dg/vect/vect-74.c
> index a44f643ee96..295ebdef358 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-74.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-74.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_float } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -49,3 +50,4 @@ int main (void)
>   dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" 
> { xfail vect_no_align } }
>   dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 
> 1 "vect" { xfail vect_no_align } }
>  */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-75-big-array.c 
> b/gcc/testsuite/gcc.dg/vect/vect-75-big-array.c
> index a3fb5053037..3825dee6dc3 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-75-big-array.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-75-big-array.c
> @@ -1,5 +1,5 @@
>  /* Disabling epilogues until we find a better way to deal with scans.  */
> -/* { dg-additional-options "--param vect-epilogues-nomask=0" } */
> +/* { dg-additional-options "--param vect-epilogues-nomask=0 
> -fdump-tree-optimized-details-blocks" } */
>  /* { dg-require-effective-target vect_int } */
>
>  #include <stdarg.h>
> @@ -54,3 +54,4 @@ int main (void)
>  /*  { dg-final { scan-tree-dump-times "Alignment of access forced using 
> versioning" 1 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } } 
> } */
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 
> "vect" { target { ! vect_align_stack_vars } xfail { ! vect_unaligned_possible 
> } } } } */
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 
> "vect" { target vect_align_stack_vars xfail { ! vect_unaligned_possible } } } 
> } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-75.c 
> b/gcc/testsuite/gcc.dg/vect/vect-75.c
> index 88da97f0bb7..fc4f3217c30 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-75.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-75.c
> @@ -1,5 +1,5 @@
>  /* Disabling epilogues until we find a better way to deal with scans.  */
> -/* { dg-additional-options "--param vect-epilogues-nomask=0" } */
> +/* { dg-additional-options "--param vect-epilogues-nomask=0 
> -fdump-tree-optimized-details-blocks" } */
>  /* { dg-require-effective-target vect_int } */
>
>  #include <stdarg.h>
> @@ -54,3 +54,4 @@ int main (void)
>  /* { dg-final { scan-tree-dump-times "Alignment of access forced using 
> versioning" 1 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } } 
> } */
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 
> "vect" { target { ! vect_align_stack_vars } xfail { ! vect_unaligned_possible 
> } } } } */
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 
> "vect" { target vect_align_stack_vars xfail { ! vect_unaligned_possible } } } 
> } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-76-big-array.c 
> b/gcc/testsuite/gcc.dg/vect/vect-76-big-array.c
> index 5825cfc4464..b3d03a7b435 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-76-big-array.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-76-big-array.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_int } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -77,3 +78,4 @@ int main (void)
>
>
>  /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-76.c 
> b/gcc/testsuite/gcc.dg/vect/vect-76.c
> index 3f4feeff8ac..6c8b9018808 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-76.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-76.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_int } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -71,3 +72,4 @@ int main (void)
>
>
>  /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-77-alignchecks.c 
> b/gcc/testsuite/gcc.dg/vect/vect-77-alignchecks.c
> index fb3e4992782..9b43de3baa0 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-77-alignchecks.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-77-alignchecks.c
> @@ -1,5 +1,5 @@
>  /* Disabling epilogues until we find a better way to deal with scans.  */
> -/* { dg-additional-options "--param vect-epilogues-nomask=0" } */
> +/* { dg-additional-options "--param vect-epilogues-nomask=0 
> -fdump-tree-optimized-details-blocks" } */
>  /* { dg-require-effective-target vect_int } */
>
>  #include <stdarg.h>
> @@ -61,3 +61,4 @@ int main (void)
>  /* { dg-final { scan-tree-dump-times "Alignment of access forced using 
> peeling" 1 "vect" { target { {! vect_no_align} && { unaligned_stack && 
> vector_alignment_reachable } } } } } */
>  /* { dg-final { scan-tree-dump-times "Alignment of access forced using 
> versioning." 1 "vect" { target { { {! unaligned_stack} && { vect_no_align && 
> { ! vect_hw_misalign } } } || {unaligned_stack && { {! 
> vector_alignment_reachable} && {! vect_no_align } } } } } } } */
>  /* { dg-final { scan-tree-dump-times "Alignment of access forced using 
> versioning." 2 "vect" { target { { unaligned_stack && { 
> vector_alignment_reachable && vect_no_align } } || {unaligned_stack && { {! 
> vector_alignment_reachable} && vect_no_align } } } } } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-77-global.c 
> b/gcc/testsuite/gcc.dg/vect/vect-77-global.c
> index 1580d6e075b..419b55d6cf8 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-77-global.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-77-global.c
> @@ -1,5 +1,5 @@
>  /* Disabling epilogues until we find a better way to deal with scans.  */
> -/* { dg-additional-options "--param vect-epilogues-nomask=0" } */
> +/* { dg-additional-options "--param vect-epilogues-nomask=0 
> -fdump-tree-optimized-details-blocks" } */
>  /* { dg-require-effective-target vect_int } */
>  /* { dg-add-options bind_pic_locally } */
>
> @@ -53,3 +53,4 @@ int main (void)
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 
> "vect" { xfail { ! vect_unaligned_possible } } } } */
>  /* { dg-final { scan-tree-dump-times "Alignment of access forced using 
> peeling" 0 "vect" } } */
>  /* { dg-final { scan-tree-dump-times "Alignment of access forced using 
> versioning." 1 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } 
> } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-77.c 
> b/gcc/testsuite/gcc.dg/vect/vect-77.c
> index d402e147043..bc2c2b8a3d4 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-77.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-77.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_int } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -43,3 +44,4 @@ int main (void)
>  }
>
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-78-alignchecks.c 
> b/gcc/testsuite/gcc.dg/vect/vect-78-alignchecks.c
> index 57e8da0a909..c200c1166eb 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-78-alignchecks.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-78-alignchecks.c
> @@ -1,5 +1,5 @@
>  /* Disabling epilogues until we find a better way to deal with scans.  */
> -/* { dg-additional-options "--param vect-epilogues-nomask=0" } */
> +/* { dg-additional-options "--param vect-epilogues-nomask=0 
> -fdump-tree-optimized-details-blocks" } */
>  /* { dg-require-effective-target vect_int } */
>
>  #include <stdarg.h>
> @@ -62,3 +62,4 @@ int main (void)
>  /* { dg-final { scan-tree-dump-times "Alignment of access forced using 
> peeling" 1 "vect" { target { {! vect_no_align} && { unaligned_stack && 
> vector_alignment_reachable } } } } } */
>  /* { dg-final { scan-tree-dump-times "Alignment of access forced using 
> versioning." 1 "vect" { target { { {! unaligned_stack} && { vect_no_align && 
> { ! vect_hw_misalign } } } || {unaligned_stack && { {! 
> vector_alignment_reachable} && { ! vect_no_align } } } } } } } */
>  /* { dg-final { scan-tree-dump-times "Alignment of access forced using 
> versioning." 2 "vect" { target { { unaligned_stack && { 
> vector_alignment_reachable && vect_no_align } } || {unaligned_stack && { {! 
> vector_alignment_reachable} && vect_no_align } } } } } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-78-global.c 
> b/gcc/testsuite/gcc.dg/vect/vect-78-global.c
> index ea039b389b2..4565e4f5090 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-78-global.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-78-global.c
> @@ -1,5 +1,5 @@
>  /* Disabling epilogues until we find a better way to deal with scans.  */
> -/* { dg-additional-options "--param vect-epilogues-nomask=0" } */
> +/* { dg-additional-options "--param vect-epilogues-nomask=0 
> -fdump-tree-optimized-details-blocks" } */
>  /* { dg-require-effective-target vect_int } */
>  /* { dg-add-options bind_pic_locally } */
>
> @@ -53,3 +53,4 @@ int main (void)
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 
> "vect" { xfail { ! vect_unaligned_possible } } } } */
>  /* { dg-final { scan-tree-dump-times "Alignment of access forced using 
> peeling" 0 "vect" } } */
>  /* { dg-final { scan-tree-dump-times "Alignment of access forced using 
> versioning." 1 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } 
> } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-78.c 
> b/gcc/testsuite/gcc.dg/vect/vect-78.c
> index faa7f2f4f76..6032a4f1f29 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-78.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-78.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_int } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -43,3 +44,4 @@ int main (void)
>  }
>
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-8.c 
> b/gcc/testsuite/gcc.dg/vect/vect-8.c
> index 44c5f53ebaf..d6b90276247 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-8.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-8.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_float } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -36,3 +37,4 @@ int main (void)
>  }
>
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-80-big-array.c 
> b/gcc/testsuite/gcc.dg/vect/vect-80-big-array.c
> index 0baf4d2859b..245035b7493 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-80-big-array.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-80-big-array.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_float } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -64,3 +65,4 @@ int main (void)
>   dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 
> 1 "vect" { xfail vect_no_align } }
>   dg-final { scan-tree-dump-times "Alignment of access forced using 
> versioning." 3 "vect" { target vect_no_align } }
>  */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-80.c 
> b/gcc/testsuite/gcc.dg/vect/vect-80.c
> index 45aac84a578..eb1514d51d1 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-80.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-80.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_float } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -53,3 +54,4 @@ int main (void)
>   dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 
> 1 "vect" { xfail vect_no_align } }
>   dg-final { scan-tree-dump-times "Alignment of access forced using 
> versioning." 3 "vect" { target vect_no_align } }
>  */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-82.c 
> b/gcc/testsuite/gcc.dg/vect/vect-82.c
> index fcafb36c063..6e41a04c238 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-82.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-82.c
> @@ -1,4 +1,5 @@
>  /* { dg-skip-if "powerpc and integer vectorization only" { ! { powerpc*-*-* 
> && vect_int } }  } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -34,3 +35,4 @@ int main (void)
>  }
>
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-82_64.c 
> b/gcc/testsuite/gcc.dg/vect/vect-82_64.c
> index 358a85a838f..f1d4574c1a9 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-82_64.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-82_64.c
> @@ -1,6 +1,6 @@
>  /* { dg-do run { target { { powerpc*-*-* && lp64 } && powerpc_altivec_ok } } 
> } */
>  /* { dg-do compile { target { { powerpc*-*-* && ilp32 } && 
> powerpc_altivec_ok } } } */
> -/* { dg-additional-options "-mpowerpc64 -maltivec" } */
> +/* { dg-additional-options "-mpowerpc64 -maltivec 
> -fdump-tree-optimized-details-blocks" } */
>  /* { dg-skip-if "" { powerpc-ibm-aix* } } */
>
>  #include <stdarg.h>
> @@ -37,3 +37,4 @@ int main (void)
>  }
>
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-83.c 
> b/gcc/testsuite/gcc.dg/vect/vect-83.c
> index a300a0a08c4..d6efd0c2804 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-83.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-83.c
> @@ -1,4 +1,5 @@
>  /* { dg-skip-if "powerpc and integer vectorization only" { ! { powerpc*-*-* 
> && vect_int } }  } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -34,3 +35,4 @@ int main (void)
>  }
>
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-83_64.c 
> b/gcc/testsuite/gcc.dg/vect/vect-83_64.c
> index a5e897e093d..8224c8c54d8 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-83_64.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-83_64.c
> @@ -1,6 +1,6 @@
>  /* { dg-do run { target { { powerpc*-*-* && lp64 } && powerpc_altivec_ok } } 
> } */
>  /* { dg-do compile { target { { powerpc*-*-* && ilp32 } && 
> powerpc_altivec_ok } } } */
> -/* { dg-additional-options "-mpowerpc64 -maltivec" } */
> +/* { dg-additional-options "-mpowerpc64 -maltivec 
> -fdump-tree-optimized-details-blocks" } */
>  /* { dg-skip-if "" { powerpc-ibm-aix* } } */
>
>  #include <stdarg.h>
> @@ -37,3 +37,4 @@ int main (void)
>  }
>
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-85-big-array.c 
> b/gcc/testsuite/gcc.dg/vect/vect-85-big-array.c
> index ade04016cc3..d4f847aee8e 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-85-big-array.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-85-big-array.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_int } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -46,3 +47,4 @@ int main (void)
>
>  /* Fails for targets that don't vectorize PLUS (e.g alpha).  */
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-85.c 
> b/gcc/testsuite/gcc.dg/vect/vect-85.c
> index a73bae1ad41..25e8ded8142 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-85.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-85.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_int } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -46,3 +47,4 @@ int main (void)
>
>  /* Fails for targets that don't vectorize PLUS (e.g alpha).  */
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-86.c 
> b/gcc/testsuite/gcc.dg/vect/vect-86.c
> index ff1d41df23f..8eddf4b7b90 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-86.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-86.c
> @@ -1,5 +1,6 @@
>  /* { dg-require-effective-target vect_int } */
>  /* { dg-add-options bind_pic_locally } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -53,3 +54,4 @@ int main (void)
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 
> "vect" } } */
>  /* { dg-final { scan-tree-dump-times "Alignment of access forced using 
> peeling" 0 "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-87.c 
> b/gcc/testsuite/gcc.dg/vect/vect-87.c
> index 17b1dcdee99..844b40c5903 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-87.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-87.c
> @@ -1,5 +1,5 @@
>  /* { dg-require-effective-target vect_int } */
> -/* { dg-additional-options "--param vect-max-peeling-for-alignment=0" } */
> +/* { dg-additional-options "--param vect-max-peeling-for-alignment=0 
> -fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -52,3 +52,4 @@ int main (void)
>  /* Fails for targets that don't vectorize PLUS (e.g alpha).  */
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
>  /* { dg-final { scan-tree-dump-times "Alignment of access forced using 
> versioning" 1 "vect" {target { {! vector_alignment_reachable} && {! 
> vect_hw_misalign} } } } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-88.c 
> b/gcc/testsuite/gcc.dg/vect/vect-88.c
> index b99cb4d89a4..7ae82aab61d 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-88.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-88.c
> @@ -1,5 +1,5 @@
>  /* { dg-require-effective-target vect_int } */
> -/* { dg-additional-options "--param vect-max-peeling-for-alignment=0" } */
> +/* { dg-additional-options "--param vect-max-peeling-for-alignment=0 
> -fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -52,3 +52,4 @@ int main (void)
>  /* Fails for targets that don't vectorize PLUS (e.g alpha).  */
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
>  /* { dg-final { scan-tree-dump-times "Alignment of access forced using 
> versioning" 1 "vect" {target { {! vector_alignment_reachable} && {! 
> vect_hw_misalign} } } } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-89-big-array.c 
> b/gcc/testsuite/gcc.dg/vect/vect-89-big-array.c
> index 59e1aae0017..437328c53a5 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-89-big-array.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-89-big-array.c
> @@ -1,5 +1,5 @@
>  /* Disabling epilogues until we find a better way to deal with scans.  */
> -/* { dg-additional-options "--param vect-epilogues-nomask=0" } */
> +/* { dg-additional-options "--param vect-epilogues-nomask=0 
> -fdump-tree-optimized-details-blocks" } */
>  /* { dg-require-effective-target vect_int } */
>
>  #include <stdarg.h>
> @@ -49,3 +49,4 @@ int main (void)
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 
> "vect" { xfail { ! vect_align_stack_vars } } } } */
>  /* { dg-final { scan-tree-dump-times "Alignment of access forced using 
> peeling" 1 "vect" { xfail { vect_element_align_preferred || { ! 
> vect_align_stack_vars } } } } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-89.c 
> b/gcc/testsuite/gcc.dg/vect/vect-89.c
> index 356ab96d330..cdadeb52551 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-89.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-89.c
> @@ -1,5 +1,5 @@
>  /* Disabling epilogues until we find a better way to deal with scans.  */
> -/* { dg-additional-options "--param vect-epilogues-nomask=0" } */
> +/* { dg-additional-options "--param vect-epilogues-nomask=0 
> -fdump-tree-optimized-details-blocks" } */
>  /* { dg-require-effective-target vect_int } */
>
>  #include <stdarg.h>
> @@ -53,3 +53,4 @@ int main (void)
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 
> "vect" { xfail { ! vect_align_stack_vars } } } } */
>  /* { dg-final { scan-tree-dump-times "Alignment of access forced using 
> peeling" 1 "vect" { xfail { vect_element_align_preferred || { ! 
> vect_align_stack_vars } } } } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-9.c 
> b/gcc/testsuite/gcc.dg/vect/vect-9.c
> index 87600fb5df0..95701911185 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-9.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-9.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_int } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -37,3 +38,4 @@ int main (void)
>  }
>
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target 
> vect_unpack } } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-91.c 
> b/gcc/testsuite/gcc.dg/vect/vect-91.c
> index 8983c7da870..ee54953d711 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-91.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-91.c
> @@ -1,6 +1,6 @@
>  /* Disabling epilogues until we find a better way to deal with scans.  */
> -/* { dg-additional-options "--param vect-epilogues-nomask=0" } */
>  /* { dg-do compile } */
> +/* { dg-additional-options "--param vect-epilogues-nomask=0 
> -fdump-tree-optimized-details-blocks" } */
>  /* { dg-require-effective-target vect_int } */
>  /* { dg-additional-options "--param vect-max-peeling-for-alignment=0" } */
>
> @@ -69,3 +69,4 @@ main3 ()
>
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 3 "vect" { xfail 
> vect_no_int_add } } } */
>  /* { dg-final { scan-tree-dump-times "Alignment of access forced using 
> versioning" 3 "vect" {target { {! vector_alignment_reachable} && {! 
> vect_hw_misalign} } } } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-92.c 
> b/gcc/testsuite/gcc.dg/vect/vect-92.c
> index 9ceb0fbadcd..16186cd923b 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-92.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-92.c
> @@ -1,5 +1,5 @@
>  /* Disabling epilogues until we find a better way to deal with scans.  */
> -/* { dg-additional-options "--param vect-epilogues-nomask=0" } */
> +/* { dg-additional-options "--param vect-epilogues-nomask=0 
> -fdump-tree-optimized-details-blocks" } */
>  /* { dg-require-effective-target vect_float } */
>
>  #include <stdarg.h>
> @@ -101,3 +101,4 @@ int main (void)
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 3 "vect" } } */
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 
> "vect" } } */
>  /* { dg-final { scan-tree-dump-times "Alignment of access forced using 
> peeling" 3 "vect" { xfail vect_element_align_preferred } } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-93.c 
> b/gcc/testsuite/gcc.dg/vect/vect-93.c
> index c3e12783b2c..a38f15d2202 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-93.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-93.c
> @@ -1,5 +1,5 @@
>  /* { dg-require-effective-target vect_float } */
> -/* { dg-additional-options "--param vect-max-peeling-for-alignment=0" } */
> +/* { dg-additional-options "--param vect-max-peeling-for-alignment=0 
> -fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -87,3 +87,4 @@ int main (void)
>  /* in main: */
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target 
> { vect_no_align && { ! vect_hw_misalign } } } } } */
>
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-95.c 
> b/gcc/testsuite/gcc.dg/vect/vect-95.c
> index 1e8bc1e7240..a8093ac9f21 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-95.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-95.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_float } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -63,3 +64,4 @@ int main (void)
>  /* { dg-final { scan-tree-dump-times "Alignment of access forced using 
> versioning" 2 "vect" { xfail { vect_no_align || vect_element_align } } } } */
>  /*  { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 
> "vect" { target { vect_no_align && { ! vect_hw_misalign } } } } } */
>  /*  { dg-final { scan-tree-dump-times "Alignment of access forced using 
> versioning" 4 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } } 
> } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-96.c 
> b/gcc/testsuite/gcc.dg/vect/vect-96.c
> index c0d6c37b21d..1f53bc51ed0 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-96.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-96.c
> @@ -1,5 +1,5 @@
>  /* Disabling epilogues until we find a better way to deal with scans.  */
> -/* { dg-additional-options "--param vect-epilogues-nomask=0" } */
> +/* { dg-additional-options "--param vect-epilogues-nomask=0 
> -fdump-tree-optimized-details-blocks" } */
>  /* { dg-require-effective-target vect_int } */
>  /* { dg-add-options double_vectors } */
>
> @@ -54,3 +54,4 @@ int main (void)
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 
> "vect" { target { { {! vect_no_align} && vector_alignment_reachable } && 
> vect_align_stack_vars } xfail { ! vect_unaligned_possible } } } } */
>  /* { dg-final { scan-tree-dump-times "Alignment of access forced using 
> peeling" 1 "vect" { xfail { { vect_no_align } || { { ! 
> vector_alignment_reachable} || vect_element_align } } } } } */
>  /* { dg-final { scan-tree-dump-times "Alignment of access forced using 
> versioning." 1 "vect" { target { { vect_no_align && { ! vect_hw_misalign } } 
> || { {! vector_alignment_reachable} && {! vect_element_align} } } } } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-97-big-array.c 
> b/gcc/testsuite/gcc.dg/vect/vect-97-big-array.c
> index 977a9d57ed4..c17c08f5d66 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-97-big-array.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-97-big-array.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_int } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -67,3 +68,4 @@ int main (void)
>
>  /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 
> "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-97.c 
> b/gcc/testsuite/gcc.dg/vect/vect-97.c
> index 734ba3b6ca3..a85b0b54a31 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-97.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-97.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_int } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -62,3 +63,4 @@ int main (void)
>
>  /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */
>  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 
> "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-98-big-array.c 
> b/gcc/testsuite/gcc.dg/vect/vect-98-big-array.c
> index 61b749d4669..5cdceee9e63 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-98-big-array.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-98-big-array.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_int } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -50,3 +51,4 @@ int main (void)
>  /* Needs interleaving support.  */
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target 
> vect_strided4 } } } */
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { xfail  
> vect_strided4 } } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-98.c 
> b/gcc/testsuite/gcc.dg/vect/vect-98.c
> index 2055cce70b2..aacb7076078 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-98.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-98.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_int } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include <stdarg.h>
>  #include "tree-vect.h"
> @@ -42,3 +43,4 @@ int main (void)
>  /* Needs interleaving support.  */
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target 
> vect_strided4 } } } */
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { xfail  
> vect_strided4 } } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/testsuite/gcc.dg/vect/vect-99.c 
> b/gcc/testsuite/gcc.dg/vect/vect-99.c
> index ae23b3afbd1..49d5e0106b4 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect-99.c
> +++ b/gcc/testsuite/gcc.dg/vect/vect-99.c
> @@ -1,4 +1,5 @@
>  /* { dg-require-effective-target vect_int } */
> +/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
>
>  #include "tree-vect.h"
>
> @@ -29,3 +30,4 @@ int main (void)
>  }
>
>  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
> +/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
> diff --git a/gcc/tree-vect-loop-manip.cc b/gcc/tree-vect-loop-manip.cc
> index e53a99e7c3c..9de897d05a5 100644
> --- a/gcc/tree-vect-loop-manip.cc
> +++ b/gcc/tree-vect-loop-manip.cc
> @@ -3121,8 +3121,13 @@ vect_do_peeling (loop_vec_info loop_vinfo, tree 
> niters, tree nitersm1,
>    tree niters_prolog;
>    int bound_prolog = 0;
>    if (prolog_peeling)
> -    niters_prolog = vect_gen_prolog_loop_niters (loop_vinfo, anchor,
> -                                                 &bound_prolog);
> +    {
> +      niters_prolog = vect_gen_prolog_loop_niters (loop_vinfo, anchor,
> +                                                   &bound_prolog);
> +      /* If algonment peeling is known, we will always execute prolog.  */
> +      if (TREE_CODE (niters_prolog) == INTEGER_CST)
> +       prob_prolog = profile_probability::always ();
> +    }
>    else
>      niters_prolog = build_int_cst (type, 0);
>

Reply via email to