------- Additional Comments From rth at gcc dot gnu dot org 2004-10-15 07:39 ------- The bug here happens because once we start processing functions, input_location changes effectively at random. E.g. walk_tree sets input_location based on the tree node that we're currently processing. Which is, frankly, insane.
It also turns out to be remarkably difficult to get hold of the locus for the end of file because c-lex and the c++ front end conspire to discard the locus that the preprocessor helpfully collects for CPP_EOF. I'll note that this has only "worked" by chance in previous versions and on mainline. What line number we get for the static constructors depends on what order we find ourselves processing the functions (inlined, not inlined, etc). I.e. essentially random. So it seems a streach to call this a 3.4 regression. There appears to be no non-invasive solution for this for 3.4. My personal feeling is that some C++ lexer guy ought to fix this for mainline, and we should WONTFIX the problem for previous versions. It's definitely non-critical and there's a perfectly good workaround for users -- set breakpoints on function names rather than line numbers. -- What |Removed |Added ---------------------------------------------------------------------------- Severity|normal |minor Component|debug |c++ GCC build triplet|i686-pc-linux | GCC host triplet|i686-pc-linux | GCC target triplet|i686-pc-linux | Known to work|4.0 3.3.3 | Last reconfirmed|2004-05-10 20:28:06 |2004-10-15 07:39:18 date| | Summary|[3.4 Regression] Compiler |"Wrong" line number for |emits wrong linenumbers |static constructor function Target Milestone|3.4.3 |4.0.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15369