fix for the multiple-decl problem - please test
Andrew Thomas Pinski
pinskia@gmail.com
Sat Dec 27 18:46:00 GMT 2008
Sent from my iPhone
On Dec 27, 2008, at 1:23 PM, Daniel Franke <franke.daniel@gmail.com>
wrote:
>
> Hi all.
>
> This is the first version of a patch for the multiple-decl problem as
> discussed before. It enables middle-end optimizations as inlining,
> but does
> not mark intent(in) arguments as TREE_CONSTANT yet (PR23169), nor
> does it
> enables -fwhole-program. The final patch shall do both.
>
> For now, I'd like to ask you to give it a spin on real-life sources
> and
> benchmarks. I'd like to know if it works for you and if there is a
> measurable
> gain from it, because ... although the results are quite promising,
> there is
> one last test in the testsuite that still fails. It seems to be a
> miscompilation of some sort. Here I'd need some help:
>
> $> cat function_module_1.f90
> module M1
> INTEGER p
> CONTAINS
> subroutine AA ()
> implicit NONE
> p = BB ()
> CONTAINS
> function BB()
> integer :: BB
> BB = 1
> end function
> end subroutine
> end module
>
> program P1
> USE M1
> implicit none
> p = 0
> call AA ()
> if (p /= 1) call abort
> end
>
> $> gfortran-svn -O1 -fdump-tree-optimized function_module_1.f90 && ./
> a.out
> $> gfortran-svn -O2 -fdump-tree-optimized function_module_1.f90 && ./
> a.out
> Aborted
>
> The difference between -O1 and -O2 seems to be, that the CALL to AA is
> inlined.
>
> $> cat function_module_1.f90.123t.optimized
> [...]
> p1 ()
> {
> static integer(kind=4) bb (void);
> static integer(kind=4) options.1[8] = {68, 255, 0, 0, 0, 1, 0, 1};
>
> <bb 2>:
> _gfortran_set_options (8, &options.1);
> p = 0;
> p = 1;
> _gfortran_abort ();
>
> }
> Invalid sum of incoming frequencies 0, should be 9996
>
> With -O1, there is no note about an "invalid sum of incoming
> frequencies".
> Does this ring a bell anywhere? Richard?
Yes the p var_decl was not merged so the middle-end thinks they are
two different variables and just props the first value.
Thanks,
Andrew Pinski
>
>
> Thanks
>
> Daniel
>
> <multiple-decl.diff>
More information about the Fortran
mailing list