-fvect-cost-model changed its behavior dependent on the optimization level. The former behavior is restored by using -fvect-cost-model=dynamic for -fvect-cost-model and -fvect-cost-model=unlimited for -fno-vect-cost-model. The following patch makes this change throughout the testsuite - which also highlights the fact that we miss testcases for the cheap cost model.
Previously selected testcases that regressed with the above change were adjusted, but clearly all cost-model testcases were developed with the dynamic model in mind. Committed. Richard. 2013-10-29 Richard Biener <rguent...@suse.de> * g++.dg/vect/slp-pr56812.cc: Adjust with respect to -fvect-cost-model changes. * gcc.dg/vect/bb-slp-32.c: Likewise. * gcc.dg/vect/costmodel/i386/i386-costmodel-vect.exp: Likewise. * gcc.dg/vect/costmodel/ppc/ppc-costmodel-vect.exp: Likewise. * gcc.dg/vect/costmodel/spu/spu-costmodel-vect.exp: Likewise. * gcc.dg/vect/costmodel/x86_64/x86_64-costmodel-vect.exp: Likewise. * gcc.target/powerpc/crypto-builtin-1.c: Likewise. * gcc.target/powerpc/p8vector-builtin-1.c: Likewise. * gcc.target/powerpc/p8vector-builtin-2.c: Likewise. * gcc.target/powerpc/p8vector-builtin-3.c: Likewise. * gcc.target/powerpc/p8vector-builtin-4.c: Likewise. * gcc.target/powerpc/p8vector-builtin-5.c: Likewise. * gcc.target/powerpc/p8vector-vectorize-1.c: Likewise. * gcc.target/powerpc/p8vector-vectorize-2.c: Likewise. * gcc.target/powerpc/p8vector-vectorize-3.c: Likewise. * gcc.target/powerpc/p8vector-vectorize-4.c: Likewise. * gcc.target/powerpc/p8vector-vectorize-5.c: Likewise. * gfortran.dg/vect/vect.exp: Likewise. Index: trunk/gcc/testsuite/g++.dg/vect/slp-pr56812.cc =================================================================== *** trunk.orig/gcc/testsuite/g++.dg/vect/slp-pr56812.cc 2013-08-30 09:55:27.000000000 +0200 --- trunk/gcc/testsuite/g++.dg/vect/slp-pr56812.cc 2013-10-29 10:06:33.146955101 +0100 *************** *** 1,7 **** /* { dg-do compile } */ /* { dg-require-effective-target vect_float } */ /* { dg-require-effective-target vect_hw_misalign } */ ! /* { dg-additional-options "-O3 -funroll-loops -fvect-cost-model" } */ class mydata { public: --- 1,7 ---- /* { dg-do compile } */ /* { dg-require-effective-target vect_float } */ /* { dg-require-effective-target vect_hw_misalign } */ ! /* { dg-additional-options "-O3 -funroll-loops -fvect-cost-model=dynamic" } */ class mydata { public: Index: trunk/gcc/testsuite/gcc.dg/vect/bb-slp-32.c =================================================================== *** trunk.orig/gcc/testsuite/gcc.dg/vect/bb-slp-32.c 2013-08-27 11:13:22.000000000 +0200 --- trunk/gcc/testsuite/gcc.dg/vect/bb-slp-32.c 2013-10-29 10:06:38.660018142 +0100 *************** *** 1,6 **** /* { dg-do compile } */ /* { dg-require-effective-target vect_int } */ ! /* { dg-additional-options "-fvect-cost-model" } */ void bar (int *); int foo (int *p) --- 1,6 ---- /* { dg-do compile } */ /* { dg-require-effective-target vect_int } */ ! /* { dg-additional-options "-fvect-cost-model=dynamic" } */ void bar (int *); int foo (int *p) Index: trunk/gcc/testsuite/gcc.dg/vect/costmodel/i386/i386-costmodel-vect.exp =================================================================== *** trunk.orig/gcc/testsuite/gcc.dg/vect/costmodel/i386/i386-costmodel-vect.exp 2013-01-11 10:54:37.000000000 +0100 --- trunk/gcc/testsuite/gcc.dg/vect/costmodel/i386/i386-costmodel-vect.exp 2013-10-29 10:07:01.423277877 +0100 *************** if { ![istarget i?86*-*-*] && ![istarget *** 28,34 **** set DEFAULT_VECTCFLAGS "" # These flags are used for all targets. ! lappend DEFAULT_VECTCFLAGS "-O2" "-ftree-vectorize" "-fvect-cost-model" # If the target system supports vector instructions, the default action # for a test is 'run', otherwise it's 'compile'. Save current default. --- 28,34 ---- set DEFAULT_VECTCFLAGS "" # These flags are used for all targets. ! lappend DEFAULT_VECTCFLAGS "-O2" "-ftree-vectorize" "-fvect-cost-model=dynamic" # If the target system supports vector instructions, the default action # for a test is 'run', otherwise it's 'compile'. Save current default. Index: trunk/gcc/testsuite/gcc.dg/vect/costmodel/ppc/ppc-costmodel-vect.exp =================================================================== *** trunk.orig/gcc/testsuite/gcc.dg/vect/costmodel/ppc/ppc-costmodel-vect.exp 2013-01-11 10:54:37.000000000 +0100 --- trunk/gcc/testsuite/gcc.dg/vect/costmodel/ppc/ppc-costmodel-vect.exp 2013-10-29 10:06:48.601131525 +0100 *************** if ![is-effective-target powerpc_altivec *** 33,39 **** set DEFAULT_VECTCFLAGS "" # These flags are used for all targets. ! lappend DEFAULT_VECTCFLAGS "-O2" "-ftree-vectorize" "-fvect-cost-model" "-fno-common" # If the target system supports vector instructions, the default action # for a test is 'run', otherwise it's 'compile'. Save current default. --- 33,39 ---- set DEFAULT_VECTCFLAGS "" # These flags are used for all targets. ! lappend DEFAULT_VECTCFLAGS "-O2" "-ftree-vectorize" "-fvect-cost-model=dynamic" "-fno-common" # If the target system supports vector instructions, the default action # for a test is 'run', otherwise it's 'compile'. Save current default. Index: trunk/gcc/testsuite/gcc.dg/vect/costmodel/spu/spu-costmodel-vect.exp =================================================================== *** trunk.orig/gcc/testsuite/gcc.dg/vect/costmodel/spu/spu-costmodel-vect.exp 2013-01-11 10:54:37.000000000 +0100 --- trunk/gcc/testsuite/gcc.dg/vect/costmodel/spu/spu-costmodel-vect.exp 2013-10-29 10:07:06.519336100 +0100 *************** if { ![istarget spu*-*-*] } then { *** 29,35 **** set DEFAULT_VECTCFLAGS "" # These flags are used for all targets. ! lappend DEFAULT_VECTCFLAGS "-O2" "-ftree-vectorize" "-fvect-cost-model" # If the target system supports vector instructions, the default action # for a test is 'run', otherwise it's 'compile'. Save current default. --- 29,35 ---- set DEFAULT_VECTCFLAGS "" # These flags are used for all targets. ! lappend DEFAULT_VECTCFLAGS "-O2" "-ftree-vectorize" "-fvect-cost-model=dynamic" # If the target system supports vector instructions, the default action # for a test is 'run', otherwise it's 'compile'. Save current default. Index: trunk/gcc/testsuite/gcc.dg/vect/costmodel/x86_64/x86_64-costmodel-vect.exp =================================================================== *** trunk.orig/gcc/testsuite/gcc.dg/vect/costmodel/x86_64/x86_64-costmodel-vect.exp 2013-01-11 10:54:37.000000000 +0100 --- trunk/gcc/testsuite/gcc.dg/vect/costmodel/x86_64/x86_64-costmodel-vect.exp 2013-10-29 10:06:55.461209864 +0100 *************** if { (![istarget x86_64-*-*] && ![istarg *** 29,35 **** set DEFAULT_VECTCFLAGS "" # These flags are used for all targets. ! lappend DEFAULT_VECTCFLAGS "-O2" "-ftree-vectorize" "-fvect-cost-model" # If the target system supports vector instructions, the default action # for a test is 'run', otherwise it's 'compile'. Save current default. --- 29,35 ---- set DEFAULT_VECTCFLAGS "" # These flags are used for all targets. ! lappend DEFAULT_VECTCFLAGS "-O2" "-ftree-vectorize" "-fvect-cost-model=dynamic" # If the target system supports vector instructions, the default action # for a test is 'run', otherwise it's 'compile'. Save current default. Index: trunk/gcc/testsuite/gcc.target/powerpc/crypto-builtin-1.c =================================================================== *** trunk.orig/gcc/testsuite/gcc.target/powerpc/crypto-builtin-1.c 2013-06-11 09:32:54.000000000 +0200 --- trunk/gcc/testsuite/gcc.target/powerpc/crypto-builtin-1.c 2013-10-29 10:05:28.814220677 +0100 *************** *** 1,7 **** /* { dg-do compile { target { powerpc*-*-* } } } */ /* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ /* { dg-require-effective-target powerpc_p8vector_ok } */ ! /* { dg-options "-mcpu=power8 -O2 -ftree-vectorize -fvect-cost-model -fno-unroll-loops -fno-unroll-all-loops" } */ typedef vector unsigned long long crypto_t; typedef vector unsigned long long v2di_t; --- 1,7 ---- /* { dg-do compile { target { powerpc*-*-* } } } */ /* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ /* { dg-require-effective-target powerpc_p8vector_ok } */ ! /* { dg-options "-mcpu=power8 -O2 -ftree-vectorize -fvect-cost-model=dynamic -fno-unroll-loops -fno-unroll-all-loops" } */ typedef vector unsigned long long crypto_t; typedef vector unsigned long long v2di_t; Index: trunk/gcc/testsuite/gcc.target/powerpc/p8vector-builtin-1.c =================================================================== *** trunk.orig/gcc/testsuite/gcc.target/powerpc/p8vector-builtin-1.c 2013-06-11 09:32:54.000000000 +0200 --- trunk/gcc/testsuite/gcc.target/powerpc/p8vector-builtin-1.c 2013-10-29 10:05:00.183893848 +0100 *************** *** 1,7 **** /* { dg-do compile { target { powerpc*-*-* } } } */ /* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ /* { dg-require-effective-target powerpc_p8vector_ok } */ ! /* { dg-options "-mcpu=power8 -O2 -ftree-vectorize -fvect-cost-model -fno-unroll-loops -fno-unroll-all-loops" } */ #ifndef TYPE #define TYPE long long --- 1,7 ---- /* { dg-do compile { target { powerpc*-*-* } } } */ /* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ /* { dg-require-effective-target powerpc_p8vector_ok } */ ! /* { dg-options "-mcpu=power8 -O2 -ftree-vectorize -fvect-cost-model=dynamic -fno-unroll-loops -fno-unroll-all-loops" } */ #ifndef TYPE #define TYPE long long Index: trunk/gcc/testsuite/gcc.target/powerpc/p8vector-builtin-2.c =================================================================== *** trunk.orig/gcc/testsuite/gcc.target/powerpc/p8vector-builtin-2.c 2013-06-11 09:32:54.000000000 +0200 --- trunk/gcc/testsuite/gcc.target/powerpc/p8vector-builtin-2.c 2013-10-29 10:05:05.154950577 +0100 *************** *** 1,7 **** /* { dg-do compile { target { powerpc*-*-* } } } */ /* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ /* { dg-require-effective-target powerpc_p8vector_ok } */ ! /* { dg-options "-mcpu=power8 -O2 -ftree-vectorize -fvect-cost-model -fno-unroll-loops -fno-unroll-all-loops" } */ #include <altivec.h> --- 1,7 ---- /* { dg-do compile { target { powerpc*-*-* } } } */ /* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ /* { dg-require-effective-target powerpc_p8vector_ok } */ ! /* { dg-options "-mcpu=power8 -O2 -ftree-vectorize -fvect-cost-model=dynamic -fno-unroll-loops -fno-unroll-all-loops" } */ #include <altivec.h> Index: trunk/gcc/testsuite/gcc.target/powerpc/p8vector-builtin-3.c =================================================================== *** trunk.orig/gcc/testsuite/gcc.target/powerpc/p8vector-builtin-3.c 2013-06-11 09:32:54.000000000 +0200 --- trunk/gcc/testsuite/gcc.target/powerpc/p8vector-builtin-3.c 2013-10-29 10:04:41.732683237 +0100 *************** *** 1,7 **** /* { dg-do compile { target { powerpc*-*-* } } } */ /* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ /* { dg-require-effective-target powerpc_p8vector_ok } */ ! /* { dg-options "-mcpu=power8 -O3 -ftree-vectorize -fvect-cost-model" } */ #include <altivec.h> --- 1,7 ---- /* { dg-do compile { target { powerpc*-*-* } } } */ /* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ /* { dg-require-effective-target powerpc_p8vector_ok } */ ! /* { dg-options "-mcpu=power8 -O3 -ftree-vectorize -fvect-cost-model=dynamic" } */ #include <altivec.h> Index: trunk/gcc/testsuite/gcc.target/powerpc/p8vector-builtin-4.c =================================================================== *** trunk.orig/gcc/testsuite/gcc.target/powerpc/p8vector-builtin-4.c 2013-06-11 09:32:54.000000000 +0200 --- trunk/gcc/testsuite/gcc.target/powerpc/p8vector-builtin-4.c 2013-10-29 10:05:19.047109191 +0100 *************** *** 1,7 **** /* { dg-do compile { target { powerpc*-*-* } } } */ /* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ /* { dg-require-effective-target powerpc_p8vector_ok } */ ! /* { dg-options "-mcpu=power8 -O3 -ftree-vectorize -fvect-cost-model" } */ #include <altivec.h> --- 1,7 ---- /* { dg-do compile { target { powerpc*-*-* } } } */ /* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ /* { dg-require-effective-target powerpc_p8vector_ok } */ ! /* { dg-options "-mcpu=power8 -O3 -ftree-vectorize -fvect-cost-model=dynamic" } */ #include <altivec.h> Index: trunk/gcc/testsuite/gcc.target/powerpc/p8vector-builtin-5.c =================================================================== *** trunk.orig/gcc/testsuite/gcc.target/powerpc/p8vector-builtin-5.c 2013-06-11 09:32:54.000000000 +0200 --- trunk/gcc/testsuite/gcc.target/powerpc/p8vector-builtin-5.c 2013-10-29 10:05:14.801060735 +0100 *************** *** 1,7 **** /* { dg-do compile { target { powerpc*-*-* } } } */ /* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ /* { dg-require-effective-target powerpc_p8vector_ok } */ ! /* { dg-options "-mcpu=power8 -O2 -ftree-vectorize -fvect-cost-model -fno-unroll-loops -fno-unroll-all-loops" } */ #include <altivec.h> --- 1,7 ---- /* { dg-do compile { target { powerpc*-*-* } } } */ /* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ /* { dg-require-effective-target powerpc_p8vector_ok } */ ! /* { dg-options "-mcpu=power8 -O2 -ftree-vectorize -fvect-cost-model=dynamic -fno-unroll-loops -fno-unroll-all-loops" } */ #include <altivec.h> Index: trunk/gcc/testsuite/gcc.target/powerpc/p8vector-vectorize-1.c =================================================================== *** trunk.orig/gcc/testsuite/gcc.target/powerpc/p8vector-vectorize-1.c 2013-06-11 09:32:54.000000000 +0200 --- trunk/gcc/testsuite/gcc.target/powerpc/p8vector-vectorize-1.c 2013-10-29 10:05:23.502160078 +0100 *************** *** 1,7 **** /* { dg-do compile { target { powerpc*-*-* } } } */ /* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ /* { dg-require-effective-target powerpc_p8vector_ok } */ ! /* { dg-options "-mcpu=power8 -O2 -ftree-vectorize -fvect-cost-model -fno-unroll-loops -fno-unroll-all-loops" } */ #ifndef SIZE #define SIZE 1024 --- 1,7 ---- /* { dg-do compile { target { powerpc*-*-* } } } */ /* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ /* { dg-require-effective-target powerpc_p8vector_ok } */ ! /* { dg-options "-mcpu=power8 -O2 -ftree-vectorize -fvect-cost-model=dynamic -fno-unroll-loops -fno-unroll-all-loops" } */ #ifndef SIZE #define SIZE 1024 Index: trunk/gcc/testsuite/gcc.target/powerpc/p8vector-vectorize-2.c =================================================================== *** trunk.orig/gcc/testsuite/gcc.target/powerpc/p8vector-vectorize-2.c 2013-06-11 09:32:54.000000000 +0200 --- trunk/gcc/testsuite/gcc.target/powerpc/p8vector-vectorize-2.c 2013-10-29 10:04:46.653739412 +0100 *************** *** 1,7 **** /* { dg-do compile { target { powerpc*-*-* } } } */ /* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ /* { dg-require-effective-target powerpc_p8vector_ok } */ ! /* { dg-options "-mcpu=power8 -O2 -ftree-vectorize -fvect-cost-model" } */ #include <stddef.h> --- 1,7 ---- /* { dg-do compile { target { powerpc*-*-* } } } */ /* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ /* { dg-require-effective-target powerpc_p8vector_ok } */ ! /* { dg-options "-mcpu=power8 -O2 -ftree-vectorize -fvect-cost-model=dynamic" } */ #include <stddef.h> Index: trunk/gcc/testsuite/gcc.target/powerpc/p8vector-vectorize-3.c =================================================================== *** trunk.orig/gcc/testsuite/gcc.target/powerpc/p8vector-vectorize-3.c 2013-06-11 09:32:54.000000000 +0200 --- trunk/gcc/testsuite/gcc.target/powerpc/p8vector-vectorize-3.c 2013-10-29 10:05:32.461262289 +0100 *************** *** 1,7 **** /* { dg-do compile { target { powerpc*-*-* } } } */ /* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ /* { dg-require-effective-target powerpc_p8vector_ok } */ ! /* { dg-options "-mcpu=power8 -O2 -ftree-vectorize -fvect-cost-model" } */ #include <stddef.h> --- 1,7 ---- /* { dg-do compile { target { powerpc*-*-* } } } */ /* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ /* { dg-require-effective-target powerpc_p8vector_ok } */ ! /* { dg-options "-mcpu=power8 -O2 -ftree-vectorize -fvect-cost-model=dynamic" } */ #include <stddef.h> Index: trunk/gcc/testsuite/gcc.target/powerpc/p8vector-vectorize-4.c =================================================================== *** trunk.orig/gcc/testsuite/gcc.target/powerpc/p8vector-vectorize-4.c 2013-06-11 09:32:54.000000000 +0200 --- trunk/gcc/testsuite/gcc.target/powerpc/p8vector-vectorize-4.c 2013-10-29 10:04:55.803843812 +0100 *************** *** 1,7 **** /* { dg-do compile { target { powerpc*-*-* } } } */ /* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ /* { dg-require-effective-target powerpc_p8vector_ok } */ ! /* { dg-options "-mcpu=power8 -O2 -ftree-vectorize -fvect-cost-model -fno-unroll-loops -fno-unroll-all-loops" } */ #ifndef SIZE #define SIZE 1024 --- 1,7 ---- /* { dg-do compile { target { powerpc*-*-* } } } */ /* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ /* { dg-require-effective-target powerpc_p8vector_ok } */ ! /* { dg-options "-mcpu=power8 -O2 -ftree-vectorize -fvect-cost-model=dynamic -fno-unroll-loops -fno-unroll-all-loops" } */ #ifndef SIZE #define SIZE 1024 Index: trunk/gcc/testsuite/gcc.target/powerpc/p8vector-vectorize-5.c =================================================================== *** trunk.orig/gcc/testsuite/gcc.target/powerpc/p8vector-vectorize-5.c 2013-06-11 09:32:54.000000000 +0200 --- trunk/gcc/testsuite/gcc.target/powerpc/p8vector-vectorize-5.c 2013-10-29 10:05:11.077018195 +0100 *************** *** 1,7 **** /* { dg-do compile { target { powerpc*-*-* } } } */ /* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ /* { dg-require-effective-target powerpc_p8vector_ok } */ ! /* { dg-options "-mcpu=power8 -O2 -ftree-vectorize -fvect-cost-model -fno-unroll-loops -fno-unroll-all-loops" } */ #ifndef SIZE #define SIZE 1024 --- 1,7 ---- /* { dg-do compile { target { powerpc*-*-* } } } */ /* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ /* { dg-require-effective-target powerpc_p8vector_ok } */ ! /* { dg-options "-mcpu=power8 -O2 -ftree-vectorize -fvect-cost-model=dynamic -fno-unroll-loops -fno-unroll-all-loops" } */ #ifndef SIZE #define SIZE 1024 Index: trunk/gcc/testsuite/gfortran.dg/vect/vect.exp =================================================================== *** trunk.orig/gcc/testsuite/gfortran.dg/vect/vect.exp 2013-01-11 10:54:34.000000000 +0100 --- trunk/gcc/testsuite/gfortran.dg/vect/vect.exp 2013-10-29 10:06:27.882894985 +0100 *************** global DEFAULT_VECTCFLAGS *** 25,31 **** set DEFAULT_VECTCFLAGS "" # These flags are used for all targets. ! lappend DEFAULT_VECTCFLAGS "-O2" "-ftree-vectorize" "-fno-vect-cost-model" \ "-fdump-tree-vect-details" # If the target system supports vector instructions, the default action --- 25,31 ---- set DEFAULT_VECTCFLAGS "" # These flags are used for all targets. ! lappend DEFAULT_VECTCFLAGS "-O2" "-ftree-vectorize" "-fvect-cost-model=unlimited" \ "-fdump-tree-vect-details" # If the target system supports vector instructions, the default action *************** dg-runtest [lsort [glob -nocomplain $src *** 68,74 **** # -fvect-cost-model tests set DEFAULT_VECTCFLAGS $SAVED_DEFAULT_VECTCFLAGS ! lappend DEFAULT_VECTCFLAGS "-fvect-cost-model" dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/cost-model-*.\[fF\]{,90,95,03,08} ]] \ "" $DEFAULT_VECTCFLAGS --- 68,74 ---- # -fvect-cost-model tests set DEFAULT_VECTCFLAGS $SAVED_DEFAULT_VECTCFLAGS ! lappend DEFAULT_VECTCFLAGS "-fvect-cost-model=dynamic" dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/cost-model-*.\[fF\]{,90,95,03,08} ]] \ "" $DEFAULT_VECTCFLAGS