On 25 April 2022 14:12:30 CEST, Jakub Jelinek via Fortran <fortran@gcc.gnu.org> wrote: >On Mon, Apr 25, 2022 at 01:38:25PM +0200, Mikael Morin wrote: >> I have just pushed the attached fix for two UNRESOLVED checks at -O0 that I >> hadn’t seen. > >I don't like forcing of DSE in -O0 compilation, wouldn't it be better >to just not check the dse dump at -O0 like in the following patch?
As Mikael already said, that's preferable indeed. > >Even better would be to check that the z._data = stores are both present >in *.optimized dump, but that doesn't really work at -O2 or above because >we inline the functions and optimize it completely away (both the stores >and corresponding reads). > >The first hunk is needed so that __OPTIMIZE__ effective target works in >Fortran testsuite, otherwise one gets a pedantic error and __OPTIMIZE__ >is considered not to match at all. > >2022-04-25 Jakub Jelinek <ja...@redhat.com> > > PR fortran/103662 > * lib/target-supports.exp (check_effective_target___OPTIMIZE__): Add > a var definition to avoid pedwarn about empty translation unit. > * gfortran.dg/unlimited_polymorphic_3.f03: Remove -ftree-dse from > dg-additional-options, guard scan-tree-dump-not directives on > __OPTIMIZE__ target. > >--- gcc/testsuite/lib/target-supports.exp.jj 2022-04-22 13:36:56.150960826 >+0200 >+++ gcc/testsuite/lib/target-supports.exp 2022-04-25 14:06:21.620537483 >+0200 >@@ -11770,6 +11770,7 @@ proc check_effective_target___OPTIMIZE__ > #ifndef __OPTIMIZE__ > # error nein Hmz. I _think_ that was /me and reading it again now, we should should not bluntly say nein but more something like unwilling to ignore __OPTIMIZE__, dude or anything more descriptive and universally understandably I assume. > #endif >+ int optimize; a plain ; won't cut it. int dummy, maybe though. There is probably a lot more of these, aren't there? thanks, > } [current_compiler_flags]] > } > >--- gcc/testsuite/gfortran.dg/unlimited_polymorphic_3.f03.jj 2022-04-25 >13:54:38.320309119 +0200 >+++ gcc/testsuite/gfortran.dg/unlimited_polymorphic_3.f03 2022-04-25 >14:04:01.346486431 +0200 >@@ -1,5 +1,5 @@ > ! { dg-do run } >-! { dg-additional-options "-ftree-dse -fdump-tree-dse-details" } >+! { dg-additional-options "-fdump-tree-dse-details" } > ! > ! Check that pointer assignments allowed by F2003:C717 > ! work and check null initialization of CLASS(*) pointers. >@@ -71,5 +71,5 @@ end subroutine foo_sq > ! We used to produce multiple independant types for the unlimited polymorphic > ! descriptors (types for class(*)) which caused stores to them to be seen as > ! useless. >-! { dg-final { scan-tree-dump-not "Deleted dead store: z._data = &w" "dse1" } >} >-! { dg-final { scan-tree-dump-not "Deleted dead store: z._data = &x" "dse1" } >} >+! { dg-final { scan-tree-dump-not "Deleted dead store: z._data = &w" "dse1" { >target __OPTIMIZE__ } } } >+! { dg-final { scan-tree-dump-not "Deleted dead store: z._data = &x" "dse1" { >target __OPTIMIZE__ } } } > > > Jakub >