Hello,
we've just noticed a quite serious regression in debug info output
in GCC 4.0 over previous releases: when building with -funit-at-a-time
(which is on by default with -O2), *no* debug info for global variables
appears to be emitted at all.
The problem appears to be this piece of code in check_global_declarations:
/* Do not emit debug information about variables that are in
static storage, but not defined. */
if (TREE_CODE (decl) == VAR_DECL
&& TREE_STATIC (decl)
&& !TREE_ASM_WRITTEN (decl))
DECL_IGNORED_P (decl) = 1;
which was added by:
http://gcc.gnu.org/ml/gcc-cvs/2004-11/msg01250.html
2004-11-25 Mark Mitchell <[EMAIL PROTECTED]>
PR c++/18556
* toplev.c (check_global_declarations): Set DECL_IGNORED_P on
unemitted variables with static storage duration.
However, check_global_declarations is called (by the C front-end at least)
*before* the call to cgraph_optimize. At this time, when -funit-at-a-time
is in effect, *no* variables have been emitted to assembler as far as I
can tell, and thus all global variables get the DECL_IGNORED_P flag.
Interestingly enough, when building with the C++ front-end, the debug
info is properly emitted. I'm not sure where exactly the difference is ...
Bye,
Ulrich
--
Dr. Ulrich Weigand
Linux on zSeries Development
[EMAIL PROTECTED]