Re: [PATCH] Fix PR92046
On Mon, 14 Oct 2019 at 17:51, Richard Biener wrote: > > On October 14, 2019 4:53:02 PM GMT+02:00, Christophe Lyon > wrote: > >On Fri, 11 Oct 2019 at 12:43, Richard Biener wrote: > > > >> On Fri, 11 Oct 2019, Rainer Orth wrote: > >> > >> > Hi Christophe, > >> > > >> > > On Thu, 10 Oct 2019 at 16:01, Richard Biener > >> wrote: > >> > > > >> > >> > >> > >> The following fixes a few param adjustments that are made based > >on > >> > >> per-function adjustable flags by moving the adjustments to their > >> > >> users. Semantics change in some minor ways but that's allowed > >> > >> for --params. > >> > >> > >> > >> Bootstrapped and tested on x86_64-unknown-linux-gnu, applied. > >> > >> > >> > >> Hi, > >> > > > >> > > This generates several regressions. > >> > > On aarch64: > >> > > FAIL: gcc.target/aarch64/vect_fp16_1.c scan-assembler-times > >> > > fadd\tv[0-9]+.8h 2 > >> > > > >> > > on arm-linux-gnueabihf: > >> > > FAIL: gcc.dg/vect/vect-align-1.c -flto -ffat-lto-objects > >> > > scan-tree-dump-times vect "vectorized 1 loops" 1 > >> > > FAIL: gcc.dg/vect/vect-align-1.c scan-tree-dump-times vect > >"vectorized > >> 1 > >> > > loops" 1 > >> > > FAIL: gcc.dg/vect/vect-align-2.c -flto -ffat-lto-objects > >> > > scan-tree-dump-times vect "vectorized 1 loops" 1 > >> > > FAIL: gcc.dg/vect/vect-align-2.c scan-tree-dump-times vect > >"vectorized > >> 1 > >> > > loops" 1 > >> > > > >> > > on armeb-linux-gnueabihf, many (316) like: > >> > > FAIL: gcc.dg/vect/O3-vect-pr34223.c scan-tree-dump-times vect > >> "vectorized 1 > >> > > loops" 1 > >> > > FAIL: gcc.dg/vect/fast-math-pr35982.c scan-tree-dump-times vect > >> "vectorized > >> > > 1 loops" 1 > >> > > > >> > > still on armeb-linux-gnueabihf: > >> > > g++.dg/vect/pr33426-ivdep-2.cc -std=c++14 (test for > >warnings, > >> line ) > >> > > g++.dg/vect/pr33426-ivdep-2.cc -std=c++17 (test for > >warnings, > >> line ) > >> > > g++.dg/vect/pr33426-ivdep-2.cc -std=c++2a (test for > >warnings, > >> line ) > >> > > g++.dg/vect/pr33426-ivdep-2.cc -std=c++98 (test for > >warnings, > >> line ) > >> > > g++.dg/vect/pr33426-ivdep-3.cc(test for warnings, line ) > >> > > g++.dg/vect/pr33426-ivdep-4.cc(test for warnings, line ) > >> > > g++.dg/vect/pr33426-ivdep.cc -std=c++14 (test for warnings, > >line > >> ) > >> > > g++.dg/vect/pr33426-ivdep.cc -std=c++17 (test for warnings, > >line > >> ) > >> > > g++.dg/vect/pr33426-ivdep.cc -std=c++2a (test for warnings, > >line > >> ) > >> > > g++.dg/vect/pr33426-ivdep.cc -std=c++98 (test for warnings, > >line > >> ) > >> > > > >> > > gfortran.dg/vect/no-vfa-pr32377.f90 -O > >scan-tree-dump-times > >> vect > >> > > "vectorized 2 loops" 1 > >> > > gfortran.dg/vect/pr19049.f90 -O scan-tree-dump-times vect > >> > > "vectorized 1 loops" 1 > >> > > gfortran.dg/vect/pr32377.f90 -O scan-tree-dump-times vect > >> > > "vectorized 2 loops" 1 > >> > > gfortran.dg/vect/vect-2.f90 -O scan-tree-dump-times vect > >> > > "vectorized 3 loops" 1 > >> > > gfortran.dg/vect/vect-3.f90 -O scan-tree-dump-times vect > >> "Alignment > >> > > of access forced using versioning" 3 > >> > > gfortran.dg/vect/vect-4.f90 -O scan-tree-dump-times vect > >> "accesses > >> > > have the same alignment." 1 > >> > > gfortran.dg/vect/vect-4.f90 -O scan-tree-dump-times vect > >> > > "vectorized 1 loops" 1 > >> > > gfortran.dg/vect/vect-5.f90 -O scan-tree-dump-times vect > >> "Alignment > >> > > of access forced using versioning." 2 > >> > > gfortran.dg/vect/vect-5.f90 -O scan-tree-dump-times vect > >> > > "vectorized 1 loops" 1 > >> > > >> > that's PR tree-optimization/92066, also seen on sparc, powerpc64, > >and > >> > ia64. > >> > >> Hmm, OK. There's one obvious bug fixed below, other than that I have > >> to investigate in more detail. > >> > >> Committed as obvious. > >> > >> Hi Richard, > > > >This patch caused another regression on armeb: > >FAIL: gcc.dg/vect/vect-multitypes-11.c -flto -ffat-lto-objects > > scan-tree-dump-times vect "vectorized 1 loops" 1 > >FAIL: gcc.dg/vect/vect-multitypes-11.c scan-tree-dump-times vect > >"vectorized 1 loops" 1 > >FAIL: gcc.dg/vect/vect-multitypes-12.c -flto -ffat-lto-objects > > scan-tree-dump-times vect "vectorized 1 loops" 1 > >FAIL: gcc.dg/vect/vect-multitypes-12.c scan-tree-dump-times vect > >"vectorized 1 loops" 1 > > Are the other ones fixed though? > Yes, thanks. > Richard. > > >Christophe > > > > > > Richard. > >> > >> 2019-10-11 Richard Biener > >> > >> PR tree-optimization/92066 > >> PR tree-optimization/92046 > >> * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): > >> Fix bogus cost model check. > >> > >> Index: gcc/tree-vect-data-refs.c > >> === > >> --- gcc/tree-vect-data-refs.c (revision 276858) > >> +++ gcc/tree-vect-data-refs.c (working copy) > >> @@ -2179,7 +2179,7 @@ > >>
Re: [PATCH] Fix PR92046
On October 14, 2019 4:53:02 PM GMT+02:00, Christophe Lyon wrote: >On Fri, 11 Oct 2019 at 12:43, Richard Biener wrote: > >> On Fri, 11 Oct 2019, Rainer Orth wrote: >> >> > Hi Christophe, >> > >> > > On Thu, 10 Oct 2019 at 16:01, Richard Biener >> wrote: >> > > >> > >> >> > >> The following fixes a few param adjustments that are made based >on >> > >> per-function adjustable flags by moving the adjustments to their >> > >> users. Semantics change in some minor ways but that's allowed >> > >> for --params. >> > >> >> > >> Bootstrapped and tested on x86_64-unknown-linux-gnu, applied. >> > >> >> > >> Hi, >> > > >> > > This generates several regressions. >> > > On aarch64: >> > > FAIL: gcc.target/aarch64/vect_fp16_1.c scan-assembler-times >> > > fadd\tv[0-9]+.8h 2 >> > > >> > > on arm-linux-gnueabihf: >> > > FAIL: gcc.dg/vect/vect-align-1.c -flto -ffat-lto-objects >> > > scan-tree-dump-times vect "vectorized 1 loops" 1 >> > > FAIL: gcc.dg/vect/vect-align-1.c scan-tree-dump-times vect >"vectorized >> 1 >> > > loops" 1 >> > > FAIL: gcc.dg/vect/vect-align-2.c -flto -ffat-lto-objects >> > > scan-tree-dump-times vect "vectorized 1 loops" 1 >> > > FAIL: gcc.dg/vect/vect-align-2.c scan-tree-dump-times vect >"vectorized >> 1 >> > > loops" 1 >> > > >> > > on armeb-linux-gnueabihf, many (316) like: >> > > FAIL: gcc.dg/vect/O3-vect-pr34223.c scan-tree-dump-times vect >> "vectorized 1 >> > > loops" 1 >> > > FAIL: gcc.dg/vect/fast-math-pr35982.c scan-tree-dump-times vect >> "vectorized >> > > 1 loops" 1 >> > > >> > > still on armeb-linux-gnueabihf: >> > > g++.dg/vect/pr33426-ivdep-2.cc -std=c++14 (test for >warnings, >> line ) >> > > g++.dg/vect/pr33426-ivdep-2.cc -std=c++17 (test for >warnings, >> line ) >> > > g++.dg/vect/pr33426-ivdep-2.cc -std=c++2a (test for >warnings, >> line ) >> > > g++.dg/vect/pr33426-ivdep-2.cc -std=c++98 (test for >warnings, >> line ) >> > > g++.dg/vect/pr33426-ivdep-3.cc(test for warnings, line ) >> > > g++.dg/vect/pr33426-ivdep-4.cc(test for warnings, line ) >> > > g++.dg/vect/pr33426-ivdep.cc -std=c++14 (test for warnings, >line >> ) >> > > g++.dg/vect/pr33426-ivdep.cc -std=c++17 (test for warnings, >line >> ) >> > > g++.dg/vect/pr33426-ivdep.cc -std=c++2a (test for warnings, >line >> ) >> > > g++.dg/vect/pr33426-ivdep.cc -std=c++98 (test for warnings, >line >> ) >> > > >> > > gfortran.dg/vect/no-vfa-pr32377.f90 -O >scan-tree-dump-times >> vect >> > > "vectorized 2 loops" 1 >> > > gfortran.dg/vect/pr19049.f90 -O scan-tree-dump-times vect >> > > "vectorized 1 loops" 1 >> > > gfortran.dg/vect/pr32377.f90 -O scan-tree-dump-times vect >> > > "vectorized 2 loops" 1 >> > > gfortran.dg/vect/vect-2.f90 -O scan-tree-dump-times vect >> > > "vectorized 3 loops" 1 >> > > gfortran.dg/vect/vect-3.f90 -O scan-tree-dump-times vect >> "Alignment >> > > of access forced using versioning" 3 >> > > gfortran.dg/vect/vect-4.f90 -O scan-tree-dump-times vect >> "accesses >> > > have the same alignment." 1 >> > > gfortran.dg/vect/vect-4.f90 -O scan-tree-dump-times vect >> > > "vectorized 1 loops" 1 >> > > gfortran.dg/vect/vect-5.f90 -O scan-tree-dump-times vect >> "Alignment >> > > of access forced using versioning." 2 >> > > gfortran.dg/vect/vect-5.f90 -O scan-tree-dump-times vect >> > > "vectorized 1 loops" 1 >> > >> > that's PR tree-optimization/92066, also seen on sparc, powerpc64, >and >> > ia64. >> >> Hmm, OK. There's one obvious bug fixed below, other than that I have >> to investigate in more detail. >> >> Committed as obvious. >> >> Hi Richard, > >This patch caused another regression on armeb: >FAIL: gcc.dg/vect/vect-multitypes-11.c -flto -ffat-lto-objects > scan-tree-dump-times vect "vectorized 1 loops" 1 >FAIL: gcc.dg/vect/vect-multitypes-11.c scan-tree-dump-times vect >"vectorized 1 loops" 1 >FAIL: gcc.dg/vect/vect-multitypes-12.c -flto -ffat-lto-objects > scan-tree-dump-times vect "vectorized 1 loops" 1 >FAIL: gcc.dg/vect/vect-multitypes-12.c scan-tree-dump-times vect >"vectorized 1 loops" 1 Are the other ones fixed though? Richard. >Christophe > > > Richard. >> >> 2019-10-11 Richard Biener >> >> PR tree-optimization/92066 >> PR tree-optimization/92046 >> * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): >> Fix bogus cost model check. >> >> Index: gcc/tree-vect-data-refs.c >> === >> --- gcc/tree-vect-data-refs.c (revision 276858) >> +++ gcc/tree-vect-data-refs.c (working copy) >> @@ -2179,7 +2179,7 @@ >>do_versioning >> = (optimize_loop_nest_for_speed_p (loop) >> && !loop->inner /* FORNOW */ >> - && flag_vect_cost_model > VECT_COST_MODEL_CHEAP); >> + && flag_vect_cost_model != VECT_COST_MODEL_CHEAP); >> >>if (do_versioning) >> { >>
Re: [PATCH] Fix PR92046
On Fri, 11 Oct 2019 at 12:43, Richard Biener wrote: > On Fri, 11 Oct 2019, Rainer Orth wrote: > > > Hi Christophe, > > > > > On Thu, 10 Oct 2019 at 16:01, Richard Biener > wrote: > > > > > >> > > >> The following fixes a few param adjustments that are made based on > > >> per-function adjustable flags by moving the adjustments to their > > >> users. Semantics change in some minor ways but that's allowed > > >> for --params. > > >> > > >> Bootstrapped and tested on x86_64-unknown-linux-gnu, applied. > > >> > > >> Hi, > > > > > > This generates several regressions. > > > On aarch64: > > > FAIL: gcc.target/aarch64/vect_fp16_1.c scan-assembler-times > > > fadd\tv[0-9]+.8h 2 > > > > > > on arm-linux-gnueabihf: > > > FAIL: gcc.dg/vect/vect-align-1.c -flto -ffat-lto-objects > > > scan-tree-dump-times vect "vectorized 1 loops" 1 > > > FAIL: gcc.dg/vect/vect-align-1.c scan-tree-dump-times vect "vectorized > 1 > > > loops" 1 > > > FAIL: gcc.dg/vect/vect-align-2.c -flto -ffat-lto-objects > > > scan-tree-dump-times vect "vectorized 1 loops" 1 > > > FAIL: gcc.dg/vect/vect-align-2.c scan-tree-dump-times vect "vectorized > 1 > > > loops" 1 > > > > > > on armeb-linux-gnueabihf, many (316) like: > > > FAIL: gcc.dg/vect/O3-vect-pr34223.c scan-tree-dump-times vect > "vectorized 1 > > > loops" 1 > > > FAIL: gcc.dg/vect/fast-math-pr35982.c scan-tree-dump-times vect > "vectorized > > > 1 loops" 1 > > > > > > still on armeb-linux-gnueabihf: > > > g++.dg/vect/pr33426-ivdep-2.cc -std=c++14 (test for warnings, > line ) > > > g++.dg/vect/pr33426-ivdep-2.cc -std=c++17 (test for warnings, > line ) > > > g++.dg/vect/pr33426-ivdep-2.cc -std=c++2a (test for warnings, > line ) > > > g++.dg/vect/pr33426-ivdep-2.cc -std=c++98 (test for warnings, > line ) > > > g++.dg/vect/pr33426-ivdep-3.cc(test for warnings, line ) > > > g++.dg/vect/pr33426-ivdep-4.cc(test for warnings, line ) > > > g++.dg/vect/pr33426-ivdep.cc -std=c++14 (test for warnings, line > ) > > > g++.dg/vect/pr33426-ivdep.cc -std=c++17 (test for warnings, line > ) > > > g++.dg/vect/pr33426-ivdep.cc -std=c++2a (test for warnings, line > ) > > > g++.dg/vect/pr33426-ivdep.cc -std=c++98 (test for warnings, line > ) > > > > > > gfortran.dg/vect/no-vfa-pr32377.f90 -O scan-tree-dump-times > vect > > > "vectorized 2 loops" 1 > > > gfortran.dg/vect/pr19049.f90 -O scan-tree-dump-times vect > > > "vectorized 1 loops" 1 > > > gfortran.dg/vect/pr32377.f90 -O scan-tree-dump-times vect > > > "vectorized 2 loops" 1 > > > gfortran.dg/vect/vect-2.f90 -O scan-tree-dump-times vect > > > "vectorized 3 loops" 1 > > > gfortran.dg/vect/vect-3.f90 -O scan-tree-dump-times vect > "Alignment > > > of access forced using versioning" 3 > > > gfortran.dg/vect/vect-4.f90 -O scan-tree-dump-times vect > "accesses > > > have the same alignment." 1 > > > gfortran.dg/vect/vect-4.f90 -O scan-tree-dump-times vect > > > "vectorized 1 loops" 1 > > > gfortran.dg/vect/vect-5.f90 -O scan-tree-dump-times vect > "Alignment > > > of access forced using versioning." 2 > > > gfortran.dg/vect/vect-5.f90 -O scan-tree-dump-times vect > > > "vectorized 1 loops" 1 > > > > that's PR tree-optimization/92066, also seen on sparc, powerpc64, and > > ia64. > > Hmm, OK. There's one obvious bug fixed below, other than that I have > to investigate in more detail. > > Committed as obvious. > > Hi Richard, This patch caused another regression on armeb: FAIL: gcc.dg/vect/vect-multitypes-11.c -flto -ffat-lto-objects scan-tree-dump-times vect "vectorized 1 loops" 1 FAIL: gcc.dg/vect/vect-multitypes-11.c scan-tree-dump-times vect "vectorized 1 loops" 1 FAIL: gcc.dg/vect/vect-multitypes-12.c -flto -ffat-lto-objects scan-tree-dump-times vect "vectorized 1 loops" 1 FAIL: gcc.dg/vect/vect-multitypes-12.c scan-tree-dump-times vect "vectorized 1 loops" 1 Christophe Richard. > > 2019-10-11 Richard Biener > > PR tree-optimization/92066 > PR tree-optimization/92046 > * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): > Fix bogus cost model check. > > Index: gcc/tree-vect-data-refs.c > === > --- gcc/tree-vect-data-refs.c (revision 276858) > +++ gcc/tree-vect-data-refs.c (working copy) > @@ -2179,7 +2179,7 @@ >do_versioning > = (optimize_loop_nest_for_speed_p (loop) > && !loop->inner /* FORNOW */ > - && flag_vect_cost_model > VECT_COST_MODEL_CHEAP); > + && flag_vect_cost_model != VECT_COST_MODEL_CHEAP); > >if (do_versioning) > { >
Re: [PATCH] Fix PR92046
On Fri, 11 Oct 2019, Rainer Orth wrote: > Hi Christophe, > > > On Thu, 10 Oct 2019 at 16:01, Richard Biener wrote: > > > >> > >> The following fixes a few param adjustments that are made based on > >> per-function adjustable flags by moving the adjustments to their > >> users. Semantics change in some minor ways but that's allowed > >> for --params. > >> > >> Bootstrapped and tested on x86_64-unknown-linux-gnu, applied. > >> > >> Hi, > > > > This generates several regressions. > > On aarch64: > > FAIL: gcc.target/aarch64/vect_fp16_1.c scan-assembler-times > > fadd\tv[0-9]+.8h 2 > > > > on arm-linux-gnueabihf: > > FAIL: gcc.dg/vect/vect-align-1.c -flto -ffat-lto-objects > > scan-tree-dump-times vect "vectorized 1 loops" 1 > > FAIL: gcc.dg/vect/vect-align-1.c scan-tree-dump-times vect "vectorized 1 > > loops" 1 > > FAIL: gcc.dg/vect/vect-align-2.c -flto -ffat-lto-objects > > scan-tree-dump-times vect "vectorized 1 loops" 1 > > FAIL: gcc.dg/vect/vect-align-2.c scan-tree-dump-times vect "vectorized 1 > > loops" 1 > > > > on armeb-linux-gnueabihf, many (316) like: > > FAIL: gcc.dg/vect/O3-vect-pr34223.c scan-tree-dump-times vect "vectorized 1 > > loops" 1 > > FAIL: gcc.dg/vect/fast-math-pr35982.c scan-tree-dump-times vect "vectorized > > 1 loops" 1 > > > > still on armeb-linux-gnueabihf: > > g++.dg/vect/pr33426-ivdep-2.cc -std=c++14 (test for warnings, line ) > > g++.dg/vect/pr33426-ivdep-2.cc -std=c++17 (test for warnings, line ) > > g++.dg/vect/pr33426-ivdep-2.cc -std=c++2a (test for warnings, line ) > > g++.dg/vect/pr33426-ivdep-2.cc -std=c++98 (test for warnings, line ) > > g++.dg/vect/pr33426-ivdep-3.cc(test for warnings, line ) > > g++.dg/vect/pr33426-ivdep-4.cc(test for warnings, line ) > > g++.dg/vect/pr33426-ivdep.cc -std=c++14 (test for warnings, line ) > > g++.dg/vect/pr33426-ivdep.cc -std=c++17 (test for warnings, line ) > > g++.dg/vect/pr33426-ivdep.cc -std=c++2a (test for warnings, line ) > > g++.dg/vect/pr33426-ivdep.cc -std=c++98 (test for warnings, line ) > > > > gfortran.dg/vect/no-vfa-pr32377.f90 -O scan-tree-dump-times vect > > "vectorized 2 loops" 1 > > gfortran.dg/vect/pr19049.f90 -O scan-tree-dump-times vect > > "vectorized 1 loops" 1 > > gfortran.dg/vect/pr32377.f90 -O scan-tree-dump-times vect > > "vectorized 2 loops" 1 > > gfortran.dg/vect/vect-2.f90 -O scan-tree-dump-times vect > > "vectorized 3 loops" 1 > > gfortran.dg/vect/vect-3.f90 -O scan-tree-dump-times vect "Alignment > > of access forced using versioning" 3 > > gfortran.dg/vect/vect-4.f90 -O scan-tree-dump-times vect "accesses > > have the same alignment." 1 > > gfortran.dg/vect/vect-4.f90 -O scan-tree-dump-times vect > > "vectorized 1 loops" 1 > > gfortran.dg/vect/vect-5.f90 -O scan-tree-dump-times vect "Alignment > > of access forced using versioning." 2 > > gfortran.dg/vect/vect-5.f90 -O scan-tree-dump-times vect > > "vectorized 1 loops" 1 > > that's PR tree-optimization/92066, also seen on sparc, powerpc64, and > ia64. Hmm, OK. There's one obvious bug fixed below, other than that I have to investigate in more detail. Committed as obvious. Richard. 2019-10-11 Richard Biener PR tree-optimization/92066 PR tree-optimization/92046 * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Fix bogus cost model check. Index: gcc/tree-vect-data-refs.c === --- gcc/tree-vect-data-refs.c (revision 276858) +++ gcc/tree-vect-data-refs.c (working copy) @@ -2179,7 +2179,7 @@ do_versioning = (optimize_loop_nest_for_speed_p (loop) && !loop->inner /* FORNOW */ - && flag_vect_cost_model > VECT_COST_MODEL_CHEAP); + && flag_vect_cost_model != VECT_COST_MODEL_CHEAP); if (do_versioning) {
Re: [PATCH] Fix PR92046
Hi Christophe, > On Thu, 10 Oct 2019 at 16:01, Richard Biener wrote: > >> >> The following fixes a few param adjustments that are made based on >> per-function adjustable flags by moving the adjustments to their >> users. Semantics change in some minor ways but that's allowed >> for --params. >> >> Bootstrapped and tested on x86_64-unknown-linux-gnu, applied. >> >> Hi, > > This generates several regressions. > On aarch64: > FAIL: gcc.target/aarch64/vect_fp16_1.c scan-assembler-times > fadd\tv[0-9]+.8h 2 > > on arm-linux-gnueabihf: > FAIL: gcc.dg/vect/vect-align-1.c -flto -ffat-lto-objects > scan-tree-dump-times vect "vectorized 1 loops" 1 > FAIL: gcc.dg/vect/vect-align-1.c scan-tree-dump-times vect "vectorized 1 > loops" 1 > FAIL: gcc.dg/vect/vect-align-2.c -flto -ffat-lto-objects > scan-tree-dump-times vect "vectorized 1 loops" 1 > FAIL: gcc.dg/vect/vect-align-2.c scan-tree-dump-times vect "vectorized 1 > loops" 1 > > on armeb-linux-gnueabihf, many (316) like: > FAIL: gcc.dg/vect/O3-vect-pr34223.c scan-tree-dump-times vect "vectorized 1 > loops" 1 > FAIL: gcc.dg/vect/fast-math-pr35982.c scan-tree-dump-times vect "vectorized > 1 loops" 1 > > still on armeb-linux-gnueabihf: > g++.dg/vect/pr33426-ivdep-2.cc -std=c++14 (test for warnings, line ) > g++.dg/vect/pr33426-ivdep-2.cc -std=c++17 (test for warnings, line ) > g++.dg/vect/pr33426-ivdep-2.cc -std=c++2a (test for warnings, line ) > g++.dg/vect/pr33426-ivdep-2.cc -std=c++98 (test for warnings, line ) > g++.dg/vect/pr33426-ivdep-3.cc(test for warnings, line ) > g++.dg/vect/pr33426-ivdep-4.cc(test for warnings, line ) > g++.dg/vect/pr33426-ivdep.cc -std=c++14 (test for warnings, line ) > g++.dg/vect/pr33426-ivdep.cc -std=c++17 (test for warnings, line ) > g++.dg/vect/pr33426-ivdep.cc -std=c++2a (test for warnings, line ) > g++.dg/vect/pr33426-ivdep.cc -std=c++98 (test for warnings, line ) > > gfortran.dg/vect/no-vfa-pr32377.f90 -O scan-tree-dump-times vect > "vectorized 2 loops" 1 > gfortran.dg/vect/pr19049.f90 -O scan-tree-dump-times vect > "vectorized 1 loops" 1 > gfortran.dg/vect/pr32377.f90 -O scan-tree-dump-times vect > "vectorized 2 loops" 1 > gfortran.dg/vect/vect-2.f90 -O scan-tree-dump-times vect > "vectorized 3 loops" 1 > gfortran.dg/vect/vect-3.f90 -O scan-tree-dump-times vect "Alignment > of access forced using versioning" 3 > gfortran.dg/vect/vect-4.f90 -O scan-tree-dump-times vect "accesses > have the same alignment." 1 > gfortran.dg/vect/vect-4.f90 -O scan-tree-dump-times vect > "vectorized 1 loops" 1 > gfortran.dg/vect/vect-5.f90 -O scan-tree-dump-times vect "Alignment > of access forced using versioning." 2 > gfortran.dg/vect/vect-5.f90 -O scan-tree-dump-times vect > "vectorized 1 loops" 1 that's PR tree-optimization/92066, also seen on sparc, powerpc64, and ia64. Rainer -- - Rainer Orth, Center for Biotechnology, Bielefeld University
Re: [PATCH] Fix PR92046
On Thu, 10 Oct 2019 at 16:01, Richard Biener wrote: > > The following fixes a few param adjustments that are made based on > per-function adjustable flags by moving the adjustments to their > users. Semantics change in some minor ways but that's allowed > for --params. > > Bootstrapped and tested on x86_64-unknown-linux-gnu, applied. > > Hi, This generates several regressions. On aarch64: FAIL: gcc.target/aarch64/vect_fp16_1.c scan-assembler-times fadd\tv[0-9]+.8h 2 on arm-linux-gnueabihf: FAIL: gcc.dg/vect/vect-align-1.c -flto -ffat-lto-objects scan-tree-dump-times vect "vectorized 1 loops" 1 FAIL: gcc.dg/vect/vect-align-1.c scan-tree-dump-times vect "vectorized 1 loops" 1 FAIL: gcc.dg/vect/vect-align-2.c -flto -ffat-lto-objects scan-tree-dump-times vect "vectorized 1 loops" 1 FAIL: gcc.dg/vect/vect-align-2.c scan-tree-dump-times vect "vectorized 1 loops" 1 on armeb-linux-gnueabihf, many (316) like: FAIL: gcc.dg/vect/O3-vect-pr34223.c scan-tree-dump-times vect "vectorized 1 loops" 1 FAIL: gcc.dg/vect/fast-math-pr35982.c scan-tree-dump-times vect "vectorized 1 loops" 1 still on armeb-linux-gnueabihf: g++.dg/vect/pr33426-ivdep-2.cc -std=c++14 (test for warnings, line ) g++.dg/vect/pr33426-ivdep-2.cc -std=c++17 (test for warnings, line ) g++.dg/vect/pr33426-ivdep-2.cc -std=c++2a (test for warnings, line ) g++.dg/vect/pr33426-ivdep-2.cc -std=c++98 (test for warnings, line ) g++.dg/vect/pr33426-ivdep-3.cc(test for warnings, line ) g++.dg/vect/pr33426-ivdep-4.cc(test for warnings, line ) g++.dg/vect/pr33426-ivdep.cc -std=c++14 (test for warnings, line ) g++.dg/vect/pr33426-ivdep.cc -std=c++17 (test for warnings, line ) g++.dg/vect/pr33426-ivdep.cc -std=c++2a (test for warnings, line ) g++.dg/vect/pr33426-ivdep.cc -std=c++98 (test for warnings, line ) gfortran.dg/vect/no-vfa-pr32377.f90 -O scan-tree-dump-times vect "vectorized 2 loops" 1 gfortran.dg/vect/pr19049.f90 -O scan-tree-dump-times vect "vectorized 1 loops" 1 gfortran.dg/vect/pr32377.f90 -O scan-tree-dump-times vect "vectorized 2 loops" 1 gfortran.dg/vect/vect-2.f90 -O scan-tree-dump-times vect "vectorized 3 loops" 1 gfortran.dg/vect/vect-3.f90 -O scan-tree-dump-times vect "Alignment of access forced using versioning" 3 gfortran.dg/vect/vect-4.f90 -O scan-tree-dump-times vect "accesses have the same alignment." 1 gfortran.dg/vect/vect-4.f90 -O scan-tree-dump-times vect "vectorized 1 loops" 1 gfortran.dg/vect/vect-5.f90 -O scan-tree-dump-times vect "Alignment of access forced using versioning." 2 gfortran.dg/vect/vect-5.f90 -O scan-tree-dump-times vect "vectorized 1 loops" 1 Christophe Richard. > > 2019-10-10 Richard Biener > > PR middle-end/92046 > * opts.c (finish_options): Do not influence global --params > from options that are adjustable per function. > * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): > Apply --param adjustment based on active cost-model. > * tree-ssa-phiopt.c (cond_if_else_store_replacement): Disable > further store-sinking when vectorization or if-conversion > are not enabled. > > Index: gcc/opts.c > === > --- gcc/opts.c (revision 276795)+++ gcc/opts.c (working copy) > +++ gcc/opts.c (working copy) > @@ -1123,24 +1123,6 @@ finish_options (struct gcc_options *opts >&& !opts_set->x_flag_reorder_functions) > opts->x_flag_reorder_functions = 1; > > - /* Tune vectorization related parametees according to cost model. */ > - if (opts->x_flag_vect_cost_model == VECT_COST_MODEL_CHEAP) > -{ > - maybe_set_param_value (PARAM_VECT_MAX_VERSION_FOR_ALIAS_CHECKS, > -6, opts->x_param_values, opts_set->x_param_values); > - maybe_set_param_value (PARAM_VECT_MAX_VERSION_FOR_ALIGNMENT_CHECKS, > -0, opts->x_param_values, opts_set->x_param_values); > - maybe_set_param_value (PARAM_VECT_MAX_PEELING_FOR_ALIGNMENT, > -0, opts->x_param_values, opts_set->x_param_values); > -} > - > - /* Set PARAM_MAX_STORES_TO_SINK to 0 if either vectorization or > if-conversion > - is disabled. */ > - if ((!opts->x_flag_tree_loop_vectorize && > !opts->x_flag_tree_slp_vectorize) > - || !opts->x_flag_tree_loop_if_convert) > -maybe_set_param_value (PARAM_MAX_STORES_TO_SINK, 0, > - opts->x_param_values, > opts_set->x_param_values); > - >/* The -gsplit-dwarf option requires -ggnu-pubnames. */ >if (opts->x_dwarf_split_debug_info) > opts->x_debug_generate_pub_sections = 2; > Index: gcc/tree-vect-data-refs.c > === > --- gcc/tree-vect-data-refs.c (revision 276795) > +++ gcc/tree-vect-data-refs.c (working copy) > @@ -2075,6 +2075,8 @@ vect_enhance_data_refs_alignment (loop_v > { >
[PATCH] Fix PR92046
The following fixes a few param adjustments that are made based on per-function adjustable flags by moving the adjustments to their users. Semantics change in some minor ways but that's allowed for --params. Bootstrapped and tested on x86_64-unknown-linux-gnu, applied. Richard. 2019-10-10 Richard Biener PR middle-end/92046 * opts.c (finish_options): Do not influence global --params from options that are adjustable per function. * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Apply --param adjustment based on active cost-model. * tree-ssa-phiopt.c (cond_if_else_store_replacement): Disable further store-sinking when vectorization or if-conversion are not enabled. Index: gcc/opts.c === --- gcc/opts.c (revision 276795)+++ gcc/opts.c (working copy) +++ gcc/opts.c (working copy) @@ -1123,24 +1123,6 @@ finish_options (struct gcc_options *opts && !opts_set->x_flag_reorder_functions) opts->x_flag_reorder_functions = 1; - /* Tune vectorization related parametees according to cost model. */ - if (opts->x_flag_vect_cost_model == VECT_COST_MODEL_CHEAP) -{ - maybe_set_param_value (PARAM_VECT_MAX_VERSION_FOR_ALIAS_CHECKS, -6, opts->x_param_values, opts_set->x_param_values); - maybe_set_param_value (PARAM_VECT_MAX_VERSION_FOR_ALIGNMENT_CHECKS, -0, opts->x_param_values, opts_set->x_param_values); - maybe_set_param_value (PARAM_VECT_MAX_PEELING_FOR_ALIGNMENT, -0, opts->x_param_values, opts_set->x_param_values); -} - - /* Set PARAM_MAX_STORES_TO_SINK to 0 if either vectorization or if-conversion - is disabled. */ - if ((!opts->x_flag_tree_loop_vectorize && !opts->x_flag_tree_slp_vectorize) - || !opts->x_flag_tree_loop_if_convert) -maybe_set_param_value (PARAM_MAX_STORES_TO_SINK, 0, - opts->x_param_values, opts_set->x_param_values); - /* The -gsplit-dwarf option requires -ggnu-pubnames. */ if (opts->x_dwarf_split_debug_info) opts->x_debug_generate_pub_sections = 2; Index: gcc/tree-vect-data-refs.c === --- gcc/tree-vect-data-refs.c (revision 276795) +++ gcc/tree-vect-data-refs.c (working copy) @@ -2075,6 +2075,8 @@ vect_enhance_data_refs_alignment (loop_v { unsigned max_allowed_peel = PARAM_VALUE (PARAM_VECT_MAX_PEELING_FOR_ALIGNMENT); + if (flag_vect_cost_model == VECT_COST_MODEL_CHEAP) + max_allowed_peel = 0; if (max_allowed_peel != (unsigned)-1) { unsigned max_peel = npeel; @@ -2168,15 +2170,16 @@ vect_enhance_data_refs_alignment (loop_v /* (2) Versioning to force alignment. */ /* Try versioning if: - 1) optimize loop for speed + 1) optimize loop for speed and the cost-model is not cheap 2) there is at least one unsupported misaligned data ref with an unknown misalignment, and 3) all misaligned data refs with a known misalignment are supported, and 4) the number of runtime alignment checks is within reason. */ - do_versioning = - optimize_loop_nest_for_speed_p (loop) - && (!loop->inner); /* FORNOW */ + do_versioning += (optimize_loop_nest_for_speed_p (loop) + && !loop->inner /* FORNOW */ + && flag_vect_cost_model > VECT_COST_MODEL_CHEAP); if (do_versioning) { @@ -3641,13 +3644,15 @@ vect_prune_runtime_alias_test_list (loop dump_printf_loc (MSG_NOTE, vect_location, "improved number of alias checks from %d to %d\n", may_alias_ddrs.length (), count); - if ((int) count > PARAM_VALUE (PARAM_VECT_MAX_VERSION_FOR_ALIAS_CHECKS)) + unsigned limit = PARAM_VALUE (PARAM_VECT_MAX_VERSION_FOR_ALIAS_CHECKS); + if (flag_simd_cost_model == VECT_COST_MODEL_CHEAP) +limit = default_param_value + (PARAM_VECT_MAX_VERSION_FOR_ALIAS_CHECKS) * 6 / 10; + if (count > limit) return opt_result::failure_at (vect_location, - "number of versioning for alias " - "run-time tests exceeds %d " - "(--param vect-max-version-for-alias-checks)\n", - PARAM_VALUE (PARAM_VECT_MAX_VERSION_FOR_ALIAS_CHECKS)); + "number of versioning for alias run-time tests exceeds %d " + "(--param vect-max-version-for-alias-checks)\n", limit); return opt_result::success (); } Index: gcc/tree-ssa-phiopt.c === --- gcc/tree-ssa-phiopt.c (revision 276795) +++ gcc/tree-ssa-phiopt.c (working copy) @@ -2467,7 +2467,11 @@ cond_if_else_store_replacement (basic_bl then_assign, else_assign); } - if (MAX_STORES_TO_SINK == 0) + /* If either vectorization or if-conversion is disabled then do + not sink any stores. */ + if