------- Comment #2 from rguenth at gcc dot gnu dot org 2010-03-28 12:58 -------
The return statement does not have line information, even without LTO:
f2 (int i, int j)
{
<bb 2>:
[/home/richard/src/trunk/gcc/testsuite/gcc.dg/guality/pr41353-1.c : 23:5] j_3
= j_1(D) + i_2(D);
[/home/richard/src/trunk/gcc/testsuite/gcc.dg/guality/pr41353-1.c : 23:5] #
DEBUG j => j_3
[/home/richard/src/trunk/gcc/testsuite/gcc.dg/guality/pr41353-1.c : 26:7] #
DEBUG i1 => [/home/richard/src/trunk/gcc/testsuite/gcc.dg/guality/pr41353-1.c :
26] i_2(D) * 2
[/home/richard/src/trunk/gcc/testsuite/gcc.dg/guality/pr41353-1.c : 27:7] #
DEBUG i2 => [/home/richard/src/trunk/gcc/testsuite/gcc.dg/guality/pr41353-1.c :
27] i_2(D) * 3
return j_3;
}
(same dump with -flto). There's no line 28 in the debug information of
either variant - still gdb breaks on the closing } for -O2 but on the
start of f3 () for -O2 -flto. But the non-LTO variant has a line advance
entry to line 29.
What is missing is visible in the .expand dump - the non-LTO variant
does have line number information on the function return (line 29), but
the LTO variant does not.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43552