From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29473 invoked by alias); 7 Oct 2008 18:51:53 -0000 Received: (qmail 27757 invoked by alias); 7 Oct 2008 18:50:04 -0000 Date: Tue, 07 Oct 2008 18:51:00 -0000 Message-ID: <20081007185004.27756.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug debug/36690] [4.3/4.4 Regression] .debug_line first line is behind the first instruction In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "jakub at gcc dot gnu dot org" Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2008-10/txt/msg00512.txt.bz2 ------- Comment #6 from jakub at gcc dot gnu dot org 2008-10-07 18:50 ------- Subject: Bug 36690 Author: jakub Date: Tue Oct 7 18:48:40 2008 New Revision: 140948 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=140948 Log: PR debug/29609 PR debug/36690 PR debug/37616 * basic-block.h (struct edge_def): Add goto_block field. * cfglayout.c (fixup_reorder_chain): Ensure that there is at least one insn with locus corresponding to edge's goto_locus if !optimize. * profile.c (branch_prob): Copy edge's goto_block. * cfgrtl.c (force_nonfallthru_and_redirect): Use goto_locus for emitted jumps. (cfg_layout_merge_blocks): Emit a nop with edge's goto_locus locator in between the merged basic blocks if !optimize and needed. * cfgexpand.c (expand_gimple_cond): Convert goto_block and goto_locus into RTL locator. For unconditional jump use that locator for the jump insn. (expand_gimple_cond): Convert goto_block and goto_locus into RTL locator for all remaining edges. For unconditional jump use that locator for the jump insn. * cfgcleanup.c (try_forward_edges): Avoid the optimization if there is more than one edge or insn locator along the forwarding edges and !optimize. If there is just one, set e->goto_locus. * tree-cfg.c (make_cond_expr_edges, make_goto_expr_edges): Set also edge's goto_block. (move_block_to_fn): Adjust edge's goto_block. * gcc.dg/debug/pr29609-1.c: New test. * gcc.dg/debug/pr29609-2.c: New test. * gcc.dg/debug/pr36690-1.c: New test. * gcc.dg/debug/pr36690-2.c: New test. * gcc.dg/debug/pr36690-3.c: New test. * gcc.dg/debug/pr37616.c: New test. * gcc.dg/debug/dwarf2/pr29609-1.c: New test. * gcc.dg/debug/dwarf2/pr29609-2.c: New test. * gcc.dg/debug/dwarf2/pr36690-1.c: New test. * gcc.dg/debug/dwarf2/pr36690-2.c: New test. * gcc.dg/debug/dwarf2/pr36690-3.c: New test. * gcc.dg/debug/dwarf2/pr37616.c: New test. Added: trunk/gcc/testsuite/gcc.dg/debug/dwarf2/pr29609-1.c trunk/gcc/testsuite/gcc.dg/debug/dwarf2/pr29609-2.c trunk/gcc/testsuite/gcc.dg/debug/dwarf2/pr36690-1.c trunk/gcc/testsuite/gcc.dg/debug/dwarf2/pr36690-2.c trunk/gcc/testsuite/gcc.dg/debug/dwarf2/pr36690-3.c trunk/gcc/testsuite/gcc.dg/debug/dwarf2/pr37616.c trunk/gcc/testsuite/gcc.dg/debug/pr29609-1.c trunk/gcc/testsuite/gcc.dg/debug/pr29609-2.c trunk/gcc/testsuite/gcc.dg/debug/pr36690-1.c trunk/gcc/testsuite/gcc.dg/debug/pr36690-2.c trunk/gcc/testsuite/gcc.dg/debug/pr36690-3.c trunk/gcc/testsuite/gcc.dg/debug/pr37616.c Modified: trunk/gcc/ChangeLog trunk/gcc/basic-block.h trunk/gcc/cfgcleanup.c trunk/gcc/cfgexpand.c trunk/gcc/cfglayout.c trunk/gcc/cfgrtl.c trunk/gcc/profile.c trunk/gcc/testsuite/ChangeLog trunk/gcc/tree-cfg.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36690