* GCC Status Report (2004-03-21) @ 2004-03-22 0:49 Mark Mitchell 2004-03-22 7:56 ` Hans-Peter Nilsson 2004-03-22 15:27 ` Jan Hubicka 0 siblings, 2 replies; 12+ messages in thread From: Mark Mitchell @ 2004-03-22 0:49 UTC (permalink / raw) To: gcc, bkoz, jakub, jason, rth, David.Billinghurst GCC 3.4 ======= If you are in the to-list for this email, I'm hoping that you'll be able to help with a critical GCC 3.4 problem. There are now 14 regressions targeted at 3.4.0, which is a substantial improvement from the 48 as of March 9th. Some of these have patches which have been approved for 3.4, but not yet checked in. So, the real number is more like 8 or 9. Some of that is due to retargeting bugs at later releases, but a lot of it is due to important bugs being fixed. Yay! Here are the two biggest issues remaining for the 3.4.0 release: * Benjamin has indicated that he wants to make changes to the V3 ABI to future-proof it for changes that have already been made on th emainline. We're waiting for those changes to be completed. * Eric and I are iterating on fixes for the RTX_UNCHANGING_P code-generation problems. Here is a list of people who I am hoping will help by looking at one or two remaining GCC 3.4 PRs, which are still very important, although somewhat secondary compared to the two items mentioned above. * Jakub Jelinek PR 14069 is a case where we go into an infinite loop on invalid code. I asked you to look at this PR on 2004-02-28; do you have any news? * Jason Merill PR 13294 is an issue with __attribute__((strong)) for namespaces. I'm not sure whether this is really a bug, or not, but since Benjamin is striving for library ABI compatibility, we need to know one way or the other. Would you please take a look? * Richard Henderson PR 11527 is a designated initializer problem, apparently relating to one of your patches. Any news? Also, would you please review Eric's patch for 13985, which is here: http://gcc.gnu.org/ml/gcc-patches/2004-03/msg00672.html Please update the PR with your thoughts. * Jan Hubicka PR 13974 relates to cases where GCC 3.4 emits bad debugging information. This is an important PR because it's going to affect people's ability to use GCC 3.4 for development. From looking at the PR, it looks like you and Dan Jacobowitz have reached some kind of consensus, and on 2004-03-14 you indicated you'd have patch "Monday or Tuesday". Is that patch available? Has Dan looked it over and confirmed it fixes the problem? * David Billinghurst PR 14207 is a problem with building with an o32 multilib in GCC 3.4. Can you confirm that this problem have been fixed in GCC 3.4? Reiterating from last time: Henceforth, please do not make any non-documentation check-ins to the 3.4 branch without my explicit approval. To get that approval, please do *not* send me mail directly. Instead, add your patch to the relevant PR, which must be targeted at 3.r, and add me to the CC list for the PR. Note that this procedure implies that if there is no PR targeted at 3.4 I will not accept the patch. Furthermore, please do not create any new PRs targeted for 3.4 without my explicit permission. If it's a regression, target it for 3.4.1. If you think it might need to be fixed in 3.4, add me to the CC list, and add a note asking me to move back the target. Please do not do this unless the PR is wrong-code, ICE-on-valid, or bootstrap for a primary target. New PRs referring to other categories of error are simply not going to get fixed for 3.4. GCC 3.5 ======= In a holding pattern until tree-ssa merge is complete. ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: GCC Status Report (2004-03-21) 2004-03-22 0:49 GCC Status Report (2004-03-21) Mark Mitchell @ 2004-03-22 7:56 ` Hans-Peter Nilsson 2004-03-23 17:10 ` Mark Mitchell 2004-03-22 15:27 ` Jan Hubicka 1 sibling, 1 reply; 12+ messages in thread From: Hans-Peter Nilsson @ 2004-03-22 7:56 UTC (permalink / raw) To: mark; +Cc: gcc > Date: Sun, 21 Mar 2004 12:27:28 -0800 > From: Mark Mitchell <mark@codesourcery.com> > Henceforth, please do not make any non-documentation check-ins to the > 3.4 branch without my explicit approval. To get that approval, please > do *not* send me mail directly. Instead, add your patch to the > relevant PR, which must be targeted at 3.r, and add me to the CC list > for the PR. Note that this procedure implies that if there is no PR > targeted at 3.4 I will not accept the patch. > > Furthermore, please do not create any new PRs targeted for 3.4 without > my explicit permission. If it's a regression, target it for 3.4.1. > If you think it might need to be fixed in 3.4, add me to the CC list, > and add a note asking me to move back the target. Please do not do > this unless the PR is wrong-code, ICE-on-valid, or bootstrap for a > primary target. New PRs referring to other categories of error are > simply not going to get fixed for 3.4. Sounds like I made a boo-boo when I created PR target/14676, then (it's targeted at 3.4.0): libstdc++-v3 broke for cris-* when massive changes including bugs were imported from main trunk. Due to branch restrictions I can't have it trivially fixed for 3.4.0 because it's not bootstrap on a primary target? I must be misunderstanding. Oh well, I moved the target to 3.4.1 as per instructions. Can't say *I* don't play by the rules. On a more productive note, I really suggest trusting target maintainers for target-local fixes like this. Please? Perhaps even *explicitly* allowing non-regression target-local fixes, as for the 3.3 branch. Alternatively, please enforce the check-in policies, only that'd be vastly less productive. brgds, H-P ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: GCC Status Report (2004-03-21) 2004-03-22 7:56 ` Hans-Peter Nilsson @ 2004-03-23 17:10 ` Mark Mitchell 0 siblings, 0 replies; 12+ messages in thread From: Mark Mitchell @ 2004-03-23 17:10 UTC (permalink / raw) To: Hans-Peter Nilsson; +Cc: gcc >On a more productive note, I really suggest trusting target >maintainers for target-local fixes like this. Please? > It's not a question of trust; it's a question of responsibility. I am responsible for the release, and therefore I must make sure -- in these final stages -- that I know what bits are going in. I also want to discourage people from making changes at the very last minute; we wall tend to make mistakes in that situation. I am, however, quite liberal with respect to granting permission to target maintainers to make target-specific changes. -- Mark Mitchell CodeSourcery, LLC (916) 791-8304 mark@codesourcery.com ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: GCC Status Report (2004-03-21) 2004-03-22 0:49 GCC Status Report (2004-03-21) Mark Mitchell 2004-03-22 7:56 ` Hans-Peter Nilsson @ 2004-03-22 15:27 ` Jan Hubicka 2004-03-23 17:25 ` Mark Mitchell 1 sibling, 1 reply; 12+ messages in thread From: Jan Hubicka @ 2004-03-22 15:27 UTC (permalink / raw) To: Mark Mitchell; +Cc: gcc, bkoz, jakub, jason, rth, David.Billinghurst > > GCC 3.4 > ======= > * Jan Hubicka > > PR 13974 relates to cases where GCC 3.4 emits bad debugging > information. This is an important PR because it's going to affect > people's ability to use GCC 3.4 for development. From looking at > the PR, it looks like you and Dan Jacobowitz have reached some kind > of consensus, and on 2004-03-14 you indicated you'd have patch > "Monday or Tuesday". Is that patch available? Has Dan looked it > over and confirmed it fixes the problem? Sorry for being late, somehow the patch got suck in testing scripts and I managed to not attach it to the history. The patch makes debug information with optimization less accurate, at least in my "gcov" metric right now (I do gcov with and without optimization and diff the output). I am not sure how to test the patch more throroughly as the problem mentioned in PR is not caught by my testing (the line number is one instruction off that makes no difference for gcov. The concept is little bit more safe and of course i can go other way around and simply modify all the emit_insn_before/after calls that do not relate to the specified instruction to use different name. I am not sure how far we want to go for 3.4. The patch attached just modify the existing functions without attempting to do the classification. 2004-03-22 Jan Hubicka <jh@suse.cz> * emit_rtl.c (emit_*_insn_before, emit_*_insn_after): Set locators according to the specified instruction. Index: emit-rtl.c =================================================================== RCS file: /cvs/gcc/gcc/gcc/emit-rtl.c,v retrieving revision 1.383 diff -c -3 -p -r1.383 emit-rtl.c *** emit-rtl.c 6 Mar 2004 01:21:26 -0000 1.383 --- emit-rtl.c 17 Mar 2004 12:14:25 -0000 *************** emit_insn_before (rtx x, rtx before) *** 3919,3924 **** --- 3919,3925 ---- { rtx last = before; rtx insn; + rtx first = PREV_INSN (before); #ifdef ENABLE_RTL_CHECKING if (before == NULL_RTX) *************** emit_insn_before (rtx x, rtx before) *** 3957,3962 **** --- 3958,3976 ---- add_insn_before (last, before); break; } + if (active_insn_p (before) && INSN_LOCATOR (before)) + { + int loc = INSN_LOCATOR (before); + first = NEXT_INSN (first); + while (1) + { + if (active_insn_p (first) && ! INSN_LOCATOR (first)) + INSN_LOCATOR (first) = loc; + if (first == last) + break; + first = NEXT_INSN (first); + } + } return last; } *************** rtx *** 3968,3973 **** --- 3982,3988 ---- emit_jump_insn_before (rtx x, rtx before) { rtx insn, last = NULL_RTX; + rtx first = PREV_INSN (before); #ifdef ENABLE_RTL_CHECKING if (before == NULL_RTX) *************** emit_jump_insn_before (rtx x, rtx before *** 4003,4008 **** --- 4018,4036 ---- add_insn_before (last, before); break; } + if (active_insn_p (before) && INSN_LOCATOR (before)) + { + int loc = INSN_LOCATOR (before); + first = NEXT_INSN (first); + while (1) + { + if (active_insn_p (first) && ! INSN_LOCATOR (first)) + INSN_LOCATOR (first) = loc; + if (first == last) + break; + first = NEXT_INSN (first); + } + } return last; } *************** rtx *** 4014,4019 **** --- 4042,4048 ---- emit_call_insn_before (rtx x, rtx before) { rtx last = NULL_RTX, insn; + rtx first = PREV_INSN (before); #ifdef ENABLE_RTL_CHECKING if (before == NULL_RTX) *************** emit_call_insn_before (rtx x, rtx before *** 4049,4054 **** --- 4078,4096 ---- add_insn_before (last, before); break; } + if (active_insn_p (before) && INSN_LOCATOR (before)) + { + int loc = INSN_LOCATOR (before); + first = NEXT_INSN (first); + while (1) + { + if (active_insn_p (first) && ! INSN_LOCATOR (first)) + INSN_LOCATOR (first) = loc; + if (first == last) + break; + first = NEXT_INSN (first); + } + } return last; } *************** emit_insn_after (rtx x, rtx after) *** 4176,4181 **** --- 4218,4235 ---- add_insn_after (last, after); break; } + if (active_insn_p (after) && INSN_LOCATOR (after)) + { + int loc = INSN_LOCATOR (after); + while (1) + { + if (active_insn_p (after) && ! INSN_LOCATOR (after)) + INSN_LOCATOR (after) = loc; + if (after == last) + break; + after = NEXT_INSN (after); + } + } return last; } *************** emit_jump_insn_after (rtx x, rtx after) *** 4232,4237 **** --- 4286,4303 ---- add_insn_after (last, after); break; } + if (active_insn_p (after) && INSN_LOCATOR (after)) + { + int loc = INSN_LOCATOR (after); + while (1) + { + if (active_insn_p (after) && ! INSN_LOCATOR (after)) + INSN_LOCATOR (after) = loc; + if (after == last) + break; + after = NEXT_INSN (after); + } + } return last; } *************** emit_call_insn_after (rtx x, rtx after) *** 4270,4275 **** --- 4336,4353 ---- last = make_call_insn_raw (x); add_insn_after (last, after); break; + } + if (active_insn_p (after) && INSN_LOCATOR (after)) + { + int loc = INSN_LOCATOR (after); + while (1) + { + if (active_insn_p (after) && ! INSN_LOCATOR (after)) + INSN_LOCATOR (after) = loc; + if (after == last) + break; + after = NEXT_INSN (after); + } } return last; ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: GCC Status Report (2004-03-21) 2004-03-22 15:27 ` Jan Hubicka @ 2004-03-23 17:25 ` Mark Mitchell 2004-03-23 19:06 ` Daniel Jacobowitz 0 siblings, 1 reply; 12+ messages in thread From: Mark Mitchell @ 2004-03-23 17:25 UTC (permalink / raw) To: Jan Hubicka; +Cc: gcc, bkoz, jakub, jason, rth, David.Billinghurst, dan Jan Hubicka wrote: >>GCC 3.4 >>======= >>* Jan Hubicka >> >> PR 13974 relates to cases where GCC 3.4 emits bad debugging >> information. This is an important PR because it's going to affect >> people's ability to use GCC 3.4 for development. From looking at >> the PR, it looks like you and Dan Jacobowitz have reached some kind >> of consensus, and on 2004-03-14 you indicated you'd have patch >> "Monday or Tuesday". Is that patch available? Has Dan looked it >> over and confirmed it fixes the problem? >> >> >Sorry for being late, somehow the patch got suck in testing scripts and >I managed to not attach it to the history. > > Dan (Jacobowitz), what say you about this patch and/or its empirical behavior in GDB-land? >2004-03-22 Jan Hubicka <jh@suse.cz> > * emit_rtl.c (emit_*_insn_before, emit_*_insn_after): Set locators > according to the specified instruction. >Index: emit-rtl.c >=================================================================== >RCS file: /cvs/gcc/gcc/gcc/emit-rtl.c,v >retrieving revision 1.383 >diff -c -3 -p -r1.383 emit-rtl.c >*** emit-rtl.c 6 Mar 2004 01:21:26 -0000 1.383 >--- emit-rtl.c 17 Mar 2004 12:14:25 -0000 >*************** emit_insn_before (rtx x, rtx before) >*** 3919,3924 **** >--- 3919,3925 ---- > { > rtx last = before; > rtx insn; >+ rtx first = PREV_INSN (before); > > #ifdef ENABLE_RTL_CHECKING > if (before == NULL_RTX) >*************** emit_insn_before (rtx x, rtx before) >*** 3957,3962 **** >--- 3958,3976 ---- > add_insn_before (last, before); > break; > } >+ if (active_insn_p (before) && INSN_LOCATOR (before)) >+ { >+ int loc = INSN_LOCATOR (before); >+ first = NEXT_INSN (first); >+ while (1) >+ { >+ if (active_insn_p (first) && ! INSN_LOCATOR (first)) >+ INSN_LOCATOR (first) = loc; >+ if (first == last) >+ break; >+ first = NEXT_INSN (first); >+ } >+ } > > return last; > } >*************** rtx >*** 3968,3973 **** >--- 3982,3988 ---- > emit_jump_insn_before (rtx x, rtx before) > { > rtx insn, last = NULL_RTX; >+ rtx first = PREV_INSN (before); > > #ifdef ENABLE_RTL_CHECKING > if (before == NULL_RTX) >*************** emit_jump_insn_before (rtx x, rtx before >*** 4003,4008 **** >--- 4018,4036 ---- > add_insn_before (last, before); > break; > } >+ if (active_insn_p (before) && INSN_LOCATOR (before)) >+ { >+ int loc = INSN_LOCATOR (before); >+ first = NEXT_INSN (first); >+ while (1) >+ { >+ if (active_insn_p (first) && ! INSN_LOCATOR (first)) >+ INSN_LOCATOR (first) = loc; >+ if (first == last) >+ break; >+ first = NEXT_INSN (first); >+ } >+ } > > return last; > } >*************** rtx >*** 4014,4019 **** >--- 4042,4048 ---- > emit_call_insn_before (rtx x, rtx before) > { > rtx last = NULL_RTX, insn; >+ rtx first = PREV_INSN (before); > > #ifdef ENABLE_RTL_CHECKING > if (before == NULL_RTX) >*************** emit_call_insn_before (rtx x, rtx before >*** 4049,4054 **** >--- 4078,4096 ---- > add_insn_before (last, before); > break; > } >+ if (active_insn_p (before) && INSN_LOCATOR (before)) >+ { >+ int loc = INSN_LOCATOR (before); >+ first = NEXT_INSN (first); >+ while (1) >+ { >+ if (active_insn_p (first) && ! INSN_LOCATOR (first)) >+ INSN_LOCATOR (first) = loc; >+ if (first == last) >+ break; >+ first = NEXT_INSN (first); >+ } >+ } > > return last; > } >*************** emit_insn_after (rtx x, rtx after) >*** 4176,4181 **** >--- 4218,4235 ---- > add_insn_after (last, after); > break; > } >+ if (active_insn_p (after) && INSN_LOCATOR (after)) >+ { >+ int loc = INSN_LOCATOR (after); >+ while (1) >+ { >+ if (active_insn_p (after) && ! INSN_LOCATOR (after)) >+ INSN_LOCATOR (after) = loc; >+ if (after == last) >+ break; >+ after = NEXT_INSN (after); >+ } >+ } > > return last; > } >*************** emit_jump_insn_after (rtx x, rtx after) >*** 4232,4237 **** >--- 4286,4303 ---- > add_insn_after (last, after); > break; > } >+ if (active_insn_p (after) && INSN_LOCATOR (after)) >+ { >+ int loc = INSN_LOCATOR (after); >+ while (1) >+ { >+ if (active_insn_p (after) && ! INSN_LOCATOR (after)) >+ INSN_LOCATOR (after) = loc; >+ if (after == last) >+ break; >+ after = NEXT_INSN (after); >+ } >+ } > > return last; > } >*************** emit_call_insn_after (rtx x, rtx after) >*** 4270,4275 **** >--- 4336,4353 ---- > last = make_call_insn_raw (x); > add_insn_after (last, after); > break; >+ } >+ if (active_insn_p (after) && INSN_LOCATOR (after)) >+ { >+ int loc = INSN_LOCATOR (after); >+ while (1) >+ { >+ if (active_insn_p (after) && ! INSN_LOCATOR (after)) >+ INSN_LOCATOR (after) = loc; >+ if (after == last) >+ break; >+ after = NEXT_INSN (after); >+ } > } > > return last; > > -- Mark Mitchell CodeSourcery, LLC (916) 791-8304 mark@codesourcery.com ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: GCC Status Report (2004-03-21) 2004-03-23 17:25 ` Mark Mitchell @ 2004-03-23 19:06 ` Daniel Jacobowitz 2004-03-23 19:20 ` Jan Hubicka 0 siblings, 1 reply; 12+ messages in thread From: Daniel Jacobowitz @ 2004-03-23 19:06 UTC (permalink / raw) To: Jan Hubicka, Mark Mitchell; +Cc: gcc On Mon, Mar 22, 2004 at 12:37:21PM +0100, Jan Hubicka wrote: > > > > GCC 3.4 > > ======= > > * Jan Hubicka > > > > PR 13974 relates to cases where GCC 3.4 emits bad debugging > > information. This is an important PR because it's going to affect > > people's ability to use GCC 3.4 for development. From looking at > > the PR, it looks like you and Dan Jacobowitz have reached some kind > > of consensus, and on 2004-03-14 you indicated you'd have patch > > "Monday or Tuesday". Is that patch available? Has Dan looked it > > over and confirmed it fixes the problem? > Sorry for being late, somehow the patch got suck in testing scripts and > I managed to not attach it to the history. > > The patch makes debug information with optimization less accurate, at > least in my "gcov" metric right now (I do gcov with and without > optimization and diff the output). I am not sure how to test the > patch more throroughly as the problem mentioned in PR is not caught by > my testing (the line number is one instruction off that makes no > difference for gcov. The concept is little bit more safe and of course > i can go other way around and simply modify all the > emit_insn_before/after calls that do not relate to the specified > instruction to use different name. > > I am not sure how far we want to go for 3.4. The patch attached just > modify the existing functions without attempting to do the > classification. > > 2004-03-22 Jan Hubicka <jh@suse.cz> > * emit_rtl.c (emit_*_insn_before, emit_*_insn_after): Set locators > according to the specified instruction. One comment on the patch itself: we should make a decision about how to approach this, one way or the other; this leaves us with both the base and _sameloc versions of these functions. On Tue, Mar 23, 2004 at 12:52:16AM -0800, Mark Mitchell wrote: > Dan (Jacobowitz), what say you about this patch and/or its empirical > behavior in GDB-land? It does fix the regression. The resulting line number information makes more logical sense to me, also. But I would like to understand what Jan means by "less accurate"; could you give a testcase so that I can examine the output myself, Jan? We may want to use this patch for now and mark this for further investigation in 3.5. -- Daniel Jacobowitz MontaVista Software Debian GNU/Linux Developer ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: GCC Status Report (2004-03-21) 2004-03-23 19:06 ` Daniel Jacobowitz @ 2004-03-23 19:20 ` Jan Hubicka 2004-03-23 19:23 ` Jan Hubicka 0 siblings, 1 reply; 12+ messages in thread From: Jan Hubicka @ 2004-03-23 19:20 UTC (permalink / raw) To: Jan Hubicka, Mark Mitchell, gcc > On Mon, Mar 22, 2004 at 12:37:21PM +0100, Jan Hubicka wrote: > > > > > > GCC 3.4 > > > ======= > > > * Jan Hubicka > > > > > > PR 13974 relates to cases where GCC 3.4 emits bad debugging > > > information. This is an important PR because it's going to affect > > > people's ability to use GCC 3.4 for development. From looking at > > > the PR, it looks like you and Dan Jacobowitz have reached some kind > > > of consensus, and on 2004-03-14 you indicated you'd have patch > > > "Monday or Tuesday". Is that patch available? Has Dan looked it > > > over and confirmed it fixes the problem? > > Sorry for being late, somehow the patch got suck in testing scripts and > > I managed to not attach it to the history. > > > > The patch makes debug information with optimization less accurate, at > > least in my "gcov" metric right now (I do gcov with and without > > optimization and diff the output). I am not sure how to test the > > patch more throroughly as the problem mentioned in PR is not caught by > > my testing (the line number is one instruction off that makes no > > difference for gcov. The concept is little bit more safe and of course > > i can go other way around and simply modify all the > > emit_insn_before/after calls that do not relate to the specified > > instruction to use different name. > > > > I am not sure how far we want to go for 3.4. The patch attached just > > modify the existing functions without attempting to do the > > classification. > > > > 2004-03-22 Jan Hubicka <jh@suse.cz> > > * emit_rtl.c (emit_*_insn_before, emit_*_insn_after): Set locators > > according to the specified instruction. > > One comment on the patch itself: we should make a decision about how to > approach this, one way or the other; this leaves us with both the base > and _sameloc versions of these functions. I am just testing version that kills the _sameloc, invents _noloc versions and updates uses in the cfg code that cause most of noise. It is roughly 20Kb patch however. (so newly invented basic blocks and code inserted into edges don't have random line number infromation attached to them) > > On Tue, Mar 23, 2004 at 12:52:16AM -0800, Mark Mitchell wrote: > > Dan (Jacobowitz), what say you about this patch and/or its empirical > > behavior in GDB-land? > > It does fix the regression. The resulting line number information > makes more logical sense to me, also. But I would like to understand > what Jan means by "less accurate"; could you give a testcase so that I > can examine the output myself, Jan? What I do is to simply compile GCC with optimization and coverage testing. Honza > > We may want to use this patch for now and mark this for further > investigation in 3.5. > > -- > Daniel Jacobowitz > MontaVista Software Debian GNU/Linux Developer ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: GCC Status Report (2004-03-21) 2004-03-23 19:20 ` Jan Hubicka @ 2004-03-23 19:23 ` Jan Hubicka 2004-03-23 19:24 ` Daniel Jacobowitz 2004-03-24 5:37 ` Mark Mitchell 0 siblings, 2 replies; 12+ messages in thread From: Jan Hubicka @ 2004-03-23 19:23 UTC (permalink / raw) To: Jan Hubicka; +Cc: Mark Mitchell, gcc > > On Mon, Mar 22, 2004 at 12:37:21PM +0100, Jan Hubicka wrote: > > > > > > > > GCC 3.4 > > > > ======= > > > > * Jan Hubicka > > > > > > > > PR 13974 relates to cases where GCC 3.4 emits bad debugging > > > > information. This is an important PR because it's going to affect > > > > people's ability to use GCC 3.4 for development. From looking at > > > > the PR, it looks like you and Dan Jacobowitz have reached some kind > > > > of consensus, and on 2004-03-14 you indicated you'd have patch > > > > "Monday or Tuesday". Is that patch available? Has Dan looked it > > > > over and confirmed it fixes the problem? > > > Sorry for being late, somehow the patch got suck in testing scripts and > > > I managed to not attach it to the history. > > > > > > The patch makes debug information with optimization less accurate, at > > > least in my "gcov" metric right now (I do gcov with and without > > > optimization and diff the output). I am not sure how to test the > > > patch more throroughly as the problem mentioned in PR is not caught by > > > my testing (the line number is one instruction off that makes no > > > difference for gcov. The concept is little bit more safe and of course > > > i can go other way around and simply modify all the > > > emit_insn_before/after calls that do not relate to the specified > > > instruction to use different name. > > > > > > I am not sure how far we want to go for 3.4. The patch attached just > > > modify the existing functions without attempting to do the > > > classification. > > > > > > 2004-03-22 Jan Hubicka <jh@suse.cz> > > > * emit_rtl.c (emit_*_insn_before, emit_*_insn_after): Set locators > > > according to the specified instruction. > > > > One comment on the patch itself: we should make a decision about how to > > approach this, one way or the other; this leaves us with both the base > > and _sameloc versions of these functions. > > I am just testing version that kills the _sameloc, invents _noloc > versions and updates uses in the cfg code that cause most of noise. It > is roughly 20Kb patch however. (so newly invented basic blocks and code > inserted into edges don't have random line number infromation attached > to them) > > > > On Tue, Mar 23, 2004 at 12:52:16AM -0800, Mark Mitchell wrote: > > > Dan (Jacobowitz), what say you about this patch and/or its empirical > > > behavior in GDB-land? > > > > It does fix the regression. The resulting line number information > > makes more logical sense to me, also. But I would like to understand > > what Jan means by "less accurate"; could you give a testcase so that I > > can examine the output myself, Jan? > > What I do is to simply compile GCC with optimization and coverage > testing. Hi, here is the updated patch. It bootstraped i686-pc-gnu-linux and I am running full testing on mainline and branch i686/ppc now. It fixes the problems with wrong gcov counts caused by BB manipulation and hope it will be acceptable for Daniel too. I worry relatively little about what direction the defaults are, obviously we need to revisit most of the emit* calls anyway. Honza 2004-03-23 Jan Hubicka <jh@suse.cz> * cfgrtl.c (try_redirect_by_replacing_jump, force_nonfallthru_and_redirect, commit_one_edge_insertion, cfg_layout_merge_blocks): Do not attach any line number information to newly inserted instructions. * emit-rtl.c (emit_insn*_before, emit_insn*_after): Rename to emit_insn_*_noloc. (emit_*insn_before, emit_insn*_after): New. (emit_*insn_before_setloc, emit_*insn_after_setloc): Do not overwrite existing locators. * rtl.h (emit_*insn_before_noloc, emit_*insn_after_noloc): Declare. (emit_*insn_before_sameloc, emit_*insn_after_sameloc): Kill. Index: cfgrtl.c =================================================================== RCS file: /cvs/gcc/gcc/gcc/cfgrtl.c,v retrieving revision 1.114 diff -c -3 -p -r1.114 cfgrtl.c *** cfgrtl.c 22 Mar 2004 02:57:26 -0000 1.114 --- cfgrtl.c 23 Mar 2004 16:06:08 -0000 *************** try_redirect_by_replacing_jump (edge e, *** 749,755 **** rtx target_label = block_label (target); rtx barrier, label, table; ! emit_jump_insn_after (gen_jump (target_label), insn); JUMP_LABEL (BB_END (src)) = target_label; LABEL_NUSES (target_label)++; if (dump_file) --- 749,755 ---- rtx target_label = block_label (target); rtx barrier, label, table; ! emit_jump_insn_after_noloc (gen_jump (target_label), insn); JUMP_LABEL (BB_END (src)) = target_label; LABEL_NUSES (target_label)++; if (dump_file) *************** force_nonfallthru_and_redirect (edge e, *** 1084,1097 **** if (target == EXIT_BLOCK_PTR) { if (HAVE_return) ! emit_jump_insn_after (gen_return (), BB_END (jump_block)); else abort (); } else { rtx label = block_label (target); ! emit_jump_insn_after (gen_jump (label), BB_END (jump_block)); JUMP_LABEL (BB_END (jump_block)) = label; LABEL_NUSES (label)++; } --- 1084,1097 ---- if (target == EXIT_BLOCK_PTR) { if (HAVE_return) ! emit_jump_insn_after_noloc (gen_return (), BB_END (jump_block)); else abort (); } else { rtx label = block_label (target); ! emit_jump_insn_after_noloc (gen_jump (label), BB_END (jump_block)); JUMP_LABEL (BB_END (jump_block)) = label; LABEL_NUSES (label)++; } *************** commit_one_edge_insertion (edge e, int w *** 1529,1539 **** if (before) { ! emit_insn_before (insns, before); last = prev_nonnote_insn (before); } else ! last = emit_insn_after (insns, after); if (returnjump_p (last)) { --- 1529,1539 ---- if (before) { ! emit_insn_before_noloc (insns, before); last = prev_nonnote_insn (before); } else ! last = emit_insn_after_noloc (insns, after); if (returnjump_p (last)) { *************** cfg_layout_merge_blocks (basic_block a, *** 2591,2597 **** { rtx first = BB_END (a), last; ! last = emit_insn_after (b->rbi->header, BB_END (a)); delete_insn_chain (NEXT_INSN (first), last); b->rbi->header = NULL; } --- 2591,2597 ---- { rtx first = BB_END (a), last; ! last = emit_insn_after_noloc (b->rbi->header, BB_END (a)); delete_insn_chain (NEXT_INSN (first), last); b->rbi->header = NULL; } *************** cfg_layout_merge_blocks (basic_block a, *** 2601,2607 **** { rtx first = unlink_insn_chain (BB_HEAD (b), BB_END (b)); ! emit_insn_after (first, BB_END (a)); /* Skip possible DELETED_LABEL insn. */ if (!NOTE_INSN_BASIC_BLOCK_P (first)) first = NEXT_INSN (first); --- 2601,2607 ---- { rtx first = unlink_insn_chain (BB_HEAD (b), BB_END (b)); ! emit_insn_after_noloc (first, BB_END (a)); /* Skip possible DELETED_LABEL insn. */ if (!NOTE_INSN_BASIC_BLOCK_P (first)) first = NEXT_INSN (first); Index: emit-rtl.c =================================================================== RCS file: /cvs/gcc/gcc/gcc/emit-rtl.c,v retrieving revision 1.386 diff -c -3 -p -r1.386 emit-rtl.c *** emit-rtl.c 22 Mar 2004 00:40:43 -0000 1.386 --- emit-rtl.c 23 Mar 2004 16:06:09 -0000 *************** remove_unnecessary_notes (void) *** 3904,3910 **** /* Make X be output before the instruction BEFORE. */ rtx ! emit_insn_before (rtx x, rtx before) { rtx last = before; rtx insn; --- 3904,3910 ---- /* Make X be output before the instruction BEFORE. */ rtx ! emit_insn_before_noloc (rtx x, rtx before) { rtx last = before; rtx insn; *************** emit_insn_before (rtx x, rtx before) *** 3954,3960 **** and output it before the instruction BEFORE. */ rtx ! emit_jump_insn_before (rtx x, rtx before) { rtx insn, last = NULL_RTX; --- 3954,3960 ---- and output it before the instruction BEFORE. */ rtx ! emit_jump_insn_before_noloc (rtx x, rtx before) { rtx insn, last = NULL_RTX; *************** emit_jump_insn_before (rtx x, rtx before *** 4000,4006 **** and output it before the instruction BEFORE. */ rtx ! emit_call_insn_before (rtx x, rtx before) { rtx last = NULL_RTX, insn; --- 4000,4006 ---- and output it before the instruction BEFORE. */ rtx ! emit_call_insn_before_noloc (rtx x, rtx before) { rtx last = NULL_RTX, insn; *************** emit_insn_after_1 (rtx first, rtx after) *** 4131,4137 **** /* Make X be output after the insn AFTER. */ rtx ! emit_insn_after (rtx x, rtx after) { rtx last = after; --- 4131,4137 ---- /* Make X be output after the insn AFTER. */ rtx ! emit_insn_after_noloc (rtx x, rtx after) { rtx last = after; *************** emit_insn_after_with_line_notes (rtx x, *** 4190,4196 **** and output it after the insn AFTER. */ rtx ! emit_jump_insn_after (rtx x, rtx after) { rtx last; --- 4190,4196 ---- and output it after the insn AFTER. */ rtx ! emit_jump_insn_after_noloc (rtx x, rtx after) { rtx last; *************** emit_jump_insn_after (rtx x, rtx after) *** 4229,4235 **** and output it after the instruction AFTER. */ rtx ! emit_call_insn_after (rtx x, rtx after) { rtx last; --- 4229,4235 ---- and output it after the instruction AFTER. */ rtx ! emit_call_insn_after_noloc (rtx x, rtx after) { rtx last; *************** emit_note_copy_after (rtx orig, rtx afte *** 4331,4349 **** return note; } \f ! /* Like emit_insn_after, but set INSN_LOCATOR according to SCOPE. */ rtx emit_insn_after_setloc (rtx pattern, rtx after, int loc) { ! rtx last = emit_insn_after (pattern, after); ! if (pattern == NULL_RTX) return last; after = NEXT_INSN (after); while (1) { ! if (active_insn_p (after)) INSN_LOCATOR (after) = loc; if (after == last) break; --- 4331,4349 ---- return note; } \f ! /* Like emit_insn_after_noloc, but set INSN_LOCATOR according to SCOPE. */ rtx emit_insn_after_setloc (rtx pattern, rtx after, int loc) { ! rtx last = emit_insn_after_noloc (pattern, after); ! if (pattern == NULL_RTX || !loc) return last; after = NEXT_INSN (after); while (1) { ! if (active_insn_p (after) && !INSN_LOCATOR (after)) INSN_LOCATOR (after) = loc; if (after == last) break; *************** emit_insn_after_setloc (rtx pattern, rtx *** 4352,4370 **** return last; } ! /* Like emit_jump_insn_after, but set INSN_LOCATOR according to SCOPE. */ rtx emit_jump_insn_after_setloc (rtx pattern, rtx after, int loc) { ! rtx last = emit_jump_insn_after (pattern, after); ! if (pattern == NULL_RTX) return last; after = NEXT_INSN (after); while (1) { ! if (active_insn_p (after)) INSN_LOCATOR (after) = loc; if (after == last) break; --- 4352,4380 ---- return last; } ! /* Like emit_insn_after_noloc, but set INSN_LOCATOR according to AFTER. */ ! rtx ! emit_insn_after (rtx pattern, rtx after) ! { ! if (INSN_P (after)) ! return emit_insn_after_setloc (pattern, after, INSN_LOCATOR (after)); ! else ! return emit_insn_after_noloc (pattern, after); ! } ! ! /* Like emit_jump_insn_after_noloc, but set INSN_LOCATOR according to SCOPE. */ rtx emit_jump_insn_after_setloc (rtx pattern, rtx after, int loc) { ! rtx last = emit_jump_insn_after_noloc (pattern, after); ! if (pattern == NULL_RTX || !loc) return last; after = NEXT_INSN (after); while (1) { ! if (active_insn_p (after) && !INSN_LOCATOR (after)) INSN_LOCATOR (after) = loc; if (after == last) break; *************** emit_jump_insn_after_setloc (rtx pattern *** 4373,4391 **** return last; } ! /* Like emit_call_insn_after, but set INSN_LOCATOR according to SCOPE. */ rtx emit_call_insn_after_setloc (rtx pattern, rtx after, int loc) { ! rtx last = emit_call_insn_after (pattern, after); ! if (pattern == NULL_RTX) return last; after = NEXT_INSN (after); while (1) { ! if (active_insn_p (after)) INSN_LOCATOR (after) = loc; if (after == last) break; --- 4383,4411 ---- return last; } ! /* Like emit_jump_insn_after_noloc, but set INSN_LOCATOR according to AFTER. */ ! rtx ! emit_jump_insn_after (rtx pattern, rtx after) ! { ! if (INSN_P (after)) ! return emit_jump_insn_after_setloc (pattern, after, INSN_LOCATOR (after)); ! else ! return emit_jump_insn_after_noloc (pattern, after); ! } ! ! /* Like emit_call_insn_after_noloc, but set INSN_LOCATOR according to SCOPE. */ rtx emit_call_insn_after_setloc (rtx pattern, rtx after, int loc) { ! rtx last = emit_call_insn_after_noloc (pattern, after); ! if (pattern == NULL_RTX || !loc) return last; after = NEXT_INSN (after); while (1) { ! if (active_insn_p (after) && !INSN_LOCATOR (after)) INSN_LOCATOR (after) = loc; if (after == last) break; *************** emit_call_insn_after_setloc (rtx pattern *** 4394,4405 **** return last; } ! /* Like emit_insn_before, but set INSN_LOCATOR according to SCOPE. */ rtx emit_insn_before_setloc (rtx pattern, rtx before, int loc) { rtx first = PREV_INSN (before); ! rtx last = emit_insn_before (pattern, before); if (pattern == NULL_RTX) return last; --- 4414,4499 ---- return last; } ! /* Like emit_call_insn_after_noloc, but set INSN_LOCATOR according to AFTER. */ ! rtx ! emit_call_insn_after (rtx pattern, rtx after) ! { ! if (INSN_P (after)) ! return emit_call_insn_after_setloc (pattern, after, INSN_LOCATOR (after)); ! else ! return emit_call_insn_after_noloc (pattern, after); ! } ! ! /* Like emit_insn_before_noloc, but set INSN_LOCATOR according to SCOPE. */ rtx emit_insn_before_setloc (rtx pattern, rtx before, int loc) { rtx first = PREV_INSN (before); ! rtx last = emit_insn_before_noloc (pattern, before); ! ! if (pattern == NULL_RTX || !loc) ! return last; ! ! first = NEXT_INSN (first); ! while (1) ! { ! if (active_insn_p (first) && !INSN_LOCATOR (first)) ! INSN_LOCATOR (first) = loc; ! if (first == last) ! break; ! first = NEXT_INSN (first); ! } ! return last; ! } ! ! /* Like emit_insn_before_noloc, but set INSN_LOCATOR according to BEFORE. */ ! rtx ! emit_insn_before (rtx pattern, rtx before) ! { ! if (INSN_P (before)) ! return emit_insn_before_setloc (pattern, before, INSN_LOCATOR (before)); ! else ! return emit_insn_before_noloc (pattern, before); ! } ! ! /* like emit_insn_before_noloc, but set insn_locator according to scope. */ ! rtx ! emit_jump_insn_before_setloc (rtx pattern, rtx before, int loc) ! { ! rtx first = PREV_INSN (before); ! rtx last = emit_jump_insn_before_noloc (pattern, before); ! ! if (pattern == NULL_RTX) ! return last; ! ! first = NEXT_INSN (first); ! while (1) ! { ! if (active_insn_p (first) && !INSN_LOCATOR (first)) ! INSN_LOCATOR (first) = loc; ! if (first == last) ! break; ! first = NEXT_INSN (first); ! } ! return last; ! } ! ! /* Like emit_jump_insn_before_noloc, but set INSN_LOCATOR according to BEFORE. */ ! rtx ! emit_jump_insn_before (rtx pattern, rtx before) ! { ! if (INSN_P (before)) ! return emit_jump_insn_before_setloc (pattern, before, INSN_LOCATOR (before)); ! else ! return emit_jump_insn_before_noloc (pattern, before); ! } ! ! /* like emit_insn_before_noloc, but set insn_locator according to scope. */ ! rtx ! emit_call_insn_before_setloc (rtx pattern, rtx before, int loc) ! { ! rtx first = PREV_INSN (before); ! rtx last = emit_call_insn_before_noloc (pattern, before); if (pattern == NULL_RTX) return last; *************** emit_insn_before_setloc (rtx pattern, rt *** 4407,4419 **** first = NEXT_INSN (first); while (1) { ! if (active_insn_p (first)) INSN_LOCATOR (first) = loc; if (first == last) break; first = NEXT_INSN (first); } return last; } \f /* Take X and emit it at the end of the doubly-linked --- 4501,4524 ---- first = NEXT_INSN (first); while (1) { ! if (active_insn_p (first) && !INSN_LOCATOR (first)) INSN_LOCATOR (first) = loc; if (first == last) break; first = NEXT_INSN (first); } return last; + } + + /* like emit_call_insn_before_noloc, + but set insn_locator according to before. */ + rtx + emit_call_insn_before (rtx pattern, rtx before) + { + if (INSN_P (before)) + return emit_call_insn_before_setloc (pattern, before, INSN_LOCATOR (before)); + else + return emit_call_insn_before_noloc (pattern, before); } \f /* Take X and emit it at the end of the doubly-linked Index: gcse.c =================================================================== RCS file: /cvs/gcc/gcc/gcc/gcse.c,v retrieving revision 1.297 diff -c -3 -p -r1.297 gcse.c *** gcse.c 22 Mar 2004 02:57:26 -0000 1.297 --- gcse.c 23 Mar 2004 16:06:10 -0000 *************** insert_insn_end_bb (struct expr *expr, b *** 5303,5309 **** } #endif /* FIXME: What if something in cc0/jump uses value set in new insn? */ ! new_insn = emit_insn_before (pat, insn); } /* Likewise if the last insn is a call, as will happen in the presence --- 5303,5309 ---- } #endif /* FIXME: What if something in cc0/jump uses value set in new insn? */ ! new_insn = emit_insn_before_noloc (pat, insn); } /* Likewise if the last insn is a call, as will happen in the presence *************** insert_insn_end_bb (struct expr *expr, b *** 5342,5351 **** || NOTE_INSN_BASIC_BLOCK_P (insn)) insn = NEXT_INSN (insn); ! new_insn = emit_insn_before (pat, insn); } else ! new_insn = emit_insn_after (pat, insn); while (1) { --- 5342,5351 ---- || NOTE_INSN_BASIC_BLOCK_P (insn)) insn = NEXT_INSN (insn); ! new_insn = emit_insn_before_noloc (pat, insn); } else ! new_insn = emit_insn_after_noloc (pat, insn); while (1) { *************** insert_insn_start_bb (rtx insn, basic_bl *** 7669,7675 **** before = NEXT_INSN (before); } ! insn = emit_insn_after (insn, prev); if (gcse_file) { --- 7669,7675 ---- before = NEXT_INSN (before); } ! insn = emit_insn_after_noloc (insn, prev); if (gcse_file) { Index: reload1.c =================================================================== RCS file: /cvs/gcc/gcc/gcc/reload1.c,v retrieving revision 1.432 diff -c -3 -p -r1.432 reload1.c *** reload1.c 5 Mar 2004 10:17:40 -0000 1.432 --- reload1.c 23 Mar 2004 16:06:11 -0000 *************** emit_reload_insns (struct insn_chain *ch *** 7024,7048 **** reloads for the operand. The RELOAD_OTHER output reloads are output in descending order by reload number. */ ! emit_insn_before_sameloc (other_input_address_reload_insns, insn); ! emit_insn_before_sameloc (other_input_reload_insns, insn); for (j = 0; j < reload_n_operands; j++) { ! emit_insn_before_sameloc (inpaddr_address_reload_insns[j], insn); ! emit_insn_before_sameloc (input_address_reload_insns[j], insn); ! emit_insn_before_sameloc (input_reload_insns[j], insn); } ! emit_insn_before_sameloc (other_operand_reload_insns, insn); ! emit_insn_before_sameloc (operand_reload_insns, insn); for (j = 0; j < reload_n_operands; j++) { ! rtx x = emit_insn_after_sameloc (outaddr_address_reload_insns[j], insn); ! x = emit_insn_after_sameloc (output_address_reload_insns[j], x); ! x = emit_insn_after_sameloc (output_reload_insns[j], x); ! emit_insn_after_sameloc (other_output_reload_insns[j], x); } /* For all the spill regs newly reloaded in this instruction, --- 7024,7048 ---- reloads for the operand. The RELOAD_OTHER output reloads are output in descending order by reload number. */ ! emit_insn_before (other_input_address_reload_insns, insn); ! emit_insn_before (other_input_reload_insns, insn); for (j = 0; j < reload_n_operands; j++) { ! emit_insn_before (inpaddr_address_reload_insns[j], insn); ! emit_insn_before (input_address_reload_insns[j], insn); ! emit_insn_before (input_reload_insns[j], insn); } ! emit_insn_before (other_operand_reload_insns, insn); ! emit_insn_before (operand_reload_insns, insn); for (j = 0; j < reload_n_operands; j++) { ! rtx x = emit_insn_after (outaddr_address_reload_insns[j], insn); ! x = emit_insn_after (output_address_reload_insns[j], x); ! x = emit_insn_after (output_reload_insns[j], x); ! emit_insn_after (other_output_reload_insns[j], x); } /* For all the spill regs newly reloaded in this instruction, Index: rtl.h =================================================================== RCS file: /cvs/gcc/gcc/gcc/rtl.h,v retrieving revision 1.466 diff -c -3 -p -r1.466 rtl.h *** rtl.h 20 Mar 2004 23:08:57 -0000 1.466 --- rtl.h 23 Mar 2004 16:06:11 -0000 *************** extern rtx assign_temp (tree, int, int, *** 1656,1674 **** --- 1656,1680 ---- /* In emit-rtl.c */ extern rtx emit_insn_before (rtx, rtx); + extern rtx emit_insn_before_noloc (rtx, rtx); extern rtx emit_insn_before_setloc (rtx, rtx, int); extern rtx emit_jump_insn_before (rtx, rtx); + extern rtx emit_jump_insn_before_noloc (rtx, rtx); extern rtx emit_jump_insn_before_setloc (rtx, rtx, int); extern rtx emit_call_insn_before (rtx, rtx); + extern rtx emit_call_insn_before_noloc (rtx, rtx); extern rtx emit_call_insn_before_setloc (rtx, rtx, int); extern rtx emit_barrier_before (rtx); extern rtx emit_label_before (rtx, rtx); extern rtx emit_note_before (int, rtx); extern rtx emit_insn_after (rtx, rtx); + extern rtx emit_insn_after_noloc (rtx, rtx); extern rtx emit_insn_after_setloc (rtx, rtx, int); extern rtx emit_jump_insn_after (rtx, rtx); + extern rtx emit_jump_insn_after_noloc (rtx, rtx); extern rtx emit_jump_insn_after_setloc (rtx, rtx, int); extern rtx emit_call_insn_after (rtx, rtx); + extern rtx emit_call_insn_after_noloc (rtx, rtx); extern rtx emit_call_insn_after_setloc (rtx, rtx, int); extern rtx emit_barrier_after (rtx); extern rtx emit_label_after (rtx, rtx); *************** extern rtx prev_label (rtx); *** 1698,1716 **** extern rtx next_label (rtx); extern rtx next_cc0_user (rtx); extern rtx prev_cc0_setter (rtx); - - #define emit_insn_before_sameloc(INSN, BEFORE) \ - emit_insn_before_setloc (INSN, BEFORE, INSN_LOCATOR (BEFORE)) - #define emit_jump_insn_before_sameloc(INSN, BEFORE) \ - emit_jump_insn_before_setloc (INSN, BEFORE, INSN_LOCATOR (BEFORE)) - #define emit_call_insn_before_sameloc(INSN, BEFORE) \ - emit_call_insn_before_setloc (INSN, BEFORE, INSN_LOCATOR (BEFORE)) - #define emit_insn_after_sameloc(INSN, AFTER) \ - emit_insn_after_setloc (INSN, AFTER, INSN_LOCATOR (AFTER)) - #define emit_jump_insn_after_sameloc(INSN, AFTER) \ - emit_jump_insn_after_setloc (INSN, AFTER, INSN_LOCATOR (AFTER)) - #define emit_call_insn_after_sameloc(INSN, AFTER) \ - emit_call_insn_after_setloc (INSN, AFTER, INSN_LOCATOR (AFTER)) /* In cfglayout.c */ extern tree choose_inner_scope (tree, tree); --- 1704,1709 ---- ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: GCC Status Report (2004-03-21) 2004-03-23 19:23 ` Jan Hubicka @ 2004-03-23 19:24 ` Daniel Jacobowitz 2004-03-23 19:37 ` Jan Hubicka 2004-03-24 5:37 ` Mark Mitchell 1 sibling, 1 reply; 12+ messages in thread From: Daniel Jacobowitz @ 2004-03-23 19:24 UTC (permalink / raw) To: Jan Hubicka; +Cc: Mark Mitchell, gcc On Tue, Mar 23, 2004 at 06:10:42PM +0100, Jan Hubicka wrote: > Hi, > here is the updated patch. It bootstraped i686-pc-gnu-linux and I am > running full testing on mainline and branch i686/ppc now. > It fixes the problems with wrong gcov counts caused by BB manipulation > and hope it will be acceptable for Daniel too. I worry relatively > little about what direction the defaults are, obviously we need to > revisit most of the emit* calls anyway. > > Honza > > 2004-03-23 Jan Hubicka <jh@suse.cz> > * cfgrtl.c (try_redirect_by_replacing_jump, > force_nonfallthru_and_redirect, commit_one_edge_insertion, > cfg_layout_merge_blocks): Do not attach any line number information > to newly inserted instructions. > * emit-rtl.c (emit_insn*_before, emit_insn*_after): Rename to > emit_insn_*_noloc. > (emit_*insn_before, emit_insn*_after): New. > (emit_*insn_before_setloc, emit_*insn_after_setloc): Do not overwrite > existing locators. > * rtl.h (emit_*insn_before_noloc, emit_*insn_after_noloc): Declare. > (emit_*insn_before_sameloc, emit_*insn_after_sameloc): Kill. Works for me. I had an interesting discussion a couple of days ago about actually expressing "no line number" in the dwarf output; it's not clear what the debugger can do with this information, but there are some possibilities. -- Daniel Jacobowitz MontaVista Software Debian GNU/Linux Developer ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: GCC Status Report (2004-03-21) 2004-03-23 19:24 ` Daniel Jacobowitz @ 2004-03-23 19:37 ` Jan Hubicka 0 siblings, 0 replies; 12+ messages in thread From: Jan Hubicka @ 2004-03-23 19:37 UTC (permalink / raw) To: Jan Hubicka, Mark Mitchell, gcc > On Tue, Mar 23, 2004 at 06:10:42PM +0100, Jan Hubicka wrote: > > Hi, > > here is the updated patch. It bootstraped i686-pc-gnu-linux and I am > > running full testing on mainline and branch i686/ppc now. > > It fixes the problems with wrong gcov counts caused by BB manipulation > > and hope it will be acceptable for Daniel too. I worry relatively > > little about what direction the defaults are, obviously we need to > > revisit most of the emit* calls anyway. > > > > Honza > > > > 2004-03-23 Jan Hubicka <jh@suse.cz> > > * cfgrtl.c (try_redirect_by_replacing_jump, > > force_nonfallthru_and_redirect, commit_one_edge_insertion, > > cfg_layout_merge_blocks): Do not attach any line number information > > to newly inserted instructions. > > * emit-rtl.c (emit_insn*_before, emit_insn*_after): Rename to > > emit_insn_*_noloc. > > (emit_*insn_before, emit_insn*_after): New. > > (emit_*insn_before_setloc, emit_*insn_after_setloc): Do not overwrite > > existing locators. > > * rtl.h (emit_*insn_before_noloc, emit_*insn_after_noloc): Declare. > > (emit_*insn_before_sameloc, emit_*insn_after_sameloc): Kill. > > Works for me. I had an interesting discussion a couple of days ago > about actually expressing "no line number" in the dwarf output; it's > not clear what the debugger can do with this information, but there are > some possibilities. The main motivation for having instructions with no line number is to avoid false line number markers in dwarf2 output after those instructions (doing something unrelated) has been moved across the instruction stream to strange location. This shows up nicely in gcov output as the line numbers then get artifically high count (and GDB would stop program unnecesarily often if the breakpoint were put to such a line) I am not sure if gdb can do something usefull with knowing that this instruction does not belong to any statement but has been constructed artifically by itself. With current strategy we simply bundle the instruction with the preceeding line that won't make breakpoints to be missplaced and thus everything should work relatively well. Honza > > -- > Daniel Jacobowitz > MontaVista Software Debian GNU/Linux Developer ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: GCC Status Report (2004-03-21) 2004-03-23 19:23 ` Jan Hubicka 2004-03-23 19:24 ` Daniel Jacobowitz @ 2004-03-24 5:37 ` Mark Mitchell 1 sibling, 0 replies; 12+ messages in thread From: Mark Mitchell @ 2004-03-24 5:37 UTC (permalink / raw) To: Jan Hubicka; +Cc: gcc Jan Hubicka wrote: >here is the updated patch. It bootstraped i686-pc-gnu-linux and I am >running full testing on mainline and branch i686/ppc now. >It fixes the problems with wrong gcov counts caused by BB manipulation >and hope it will be acceptable for Daniel too. I worry relatively >little about what direction the defaults are, obviously we need to >revisit most of the emit* calls anyway. > OK for 3.4.0. -- Mark Mitchell CodeSourcery, LLC (916) 791-8304 mark@codesourcery.com ^ permalink raw reply [flat|nested] 12+ messages in thread
* RE: GCC Status Report (2004-03-21)
@ 2004-03-22 6:03 Billinghurst, David (CALCRTS)
0 siblings, 0 replies; 12+ messages in thread
From: Billinghurst, David (CALCRTS) @ 2004-03-22 6:03 UTC (permalink / raw)
To: mark, gcc
> GCC 3.4
> =======
>
> If you are in the to-list for this email, I'm hoping that you'll be
> able to help with a critical GCC 3.4 problem.
> * David Billinghurst
>
> PR 14207 is a problem with building with an o32 multilib in GCC 3.4.
> Can you confirm that this problem have been fixed in GCC 3.4?
This problem does not occur with GCC 3.4
see http://gcc.gnu.org/ml/gcc-testresults/2004-03/msg01107.html
There is a problem with GCC 3.5.
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2004-03-23 21:28 UTC | newest] Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2004-03-22 0:49 GCC Status Report (2004-03-21) Mark Mitchell 2004-03-22 7:56 ` Hans-Peter Nilsson 2004-03-23 17:10 ` Mark Mitchell 2004-03-22 15:27 ` Jan Hubicka 2004-03-23 17:25 ` Mark Mitchell 2004-03-23 19:06 ` Daniel Jacobowitz 2004-03-23 19:20 ` Jan Hubicka 2004-03-23 19:23 ` Jan Hubicka 2004-03-23 19:24 ` Daniel Jacobowitz 2004-03-23 19:37 ` Jan Hubicka 2004-03-24 5:37 ` Mark Mitchell 2004-03-22 6:03 Billinghurst, David (CALCRTS)
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).