Hi all. I'm in the process of revamping the fortran-frontend to use trees instead of linked lists in its array-constructor representation (initial patch at [1]). By now, I'm hunting down the last regressions. For one regression, I have no idea how to deal with it.
The problem: for some reason the .o file for a small fortran program may be blown up to multiple GB. The diff below shows the differences in assembler of the testcase gfortran.dg/actual_array_substr_2.f90, once compiled with current trunk, once with my local tree. The only difference is the ".zero $bignumber" - it's not overly far fetched to link $bignumber with the object file size. It is to assume that I either dropped a required initialization or introduced one that should not be there. Simply reading the diff doesn't help me much as (a) it's rather big by now and (b) whenever I identified a candidate and put a breakpoint there, execution never actually stopped there ^^ Hints where these .zero lines are generated and why, where to put a breakpoint and what to look for -- or anything else that puts me on the right track -- would be appreciated. Thanks Daniel --- actual_array_substr_2.s.orig 2009-12-27 04:50:39.000000000 +0100 +++ actual_array_substr_2.s 2009-12-27 04:48:36.000000000 +0100 @@ -871,7 +871,9 @@ .type teststring.1574, @object .size teststring.1574, 24 teststring.1574: + .zero 12 .ascii "abc def ghij" + .zero 2102025972 .ascii "klm nop qrst" .align 4 .type m.1571, @object @@ -903,7 +905,9 @@ .type foostring.1518, @object .size foostring.1518, 24 foostring.1518: + .zero 12 .ascii "0123456789#$" + .zero 2102063220 .ascii "$#9876543210" - .ident "GCC: (GNU) 4.5.0 20091226 (experimental)" + .ident "GCC: (GNU) 4.5.0 20091217 (experimental)" .section .note.GNU-stack,"",@progbits [1] http://gcc.gnu.org/ml/fortran/2009-12/msg00170.html