On May 4, 2011, Revital1 Eres <e...@il.ibm.com> wrote:
> Hello Alexandre
>> I think this will restore proper functioning to SMS in the presence of
>> debug insns. A while ago, we'd never generate deps of non-debug insns
>> on debug insns. I introduced them to enable sched to adjust (reset)
>> debug insns when non-debug insns were moved before them. I believe it
>> is safe to leave them out of the SCCs. Even though this will end up
>> causing some loss of debug info, that's probably unavoidable, and the
>> end result after this change is pobably the best we can hope for. Your
> Thanks for the patch!
> I actually discussed this issue with Ayal yesterday.
> Ayal also suggested to reconsider the edges that are created in
> the DDG between real instructions and debug_insns. Currently, we create
> bidirectional anti deps edges between them. This leads to the problem you
> were trying to solve in the current patch (described below) where these
> extra edges influence the construction of the strongly connected component
> and the code generated with and w\o -g. Your patch seems to solve this
> However I can not approve it as I'm not the maintainer (Ayal is).
(Retested on x86_64-linux-gnu and i686-pc-linux-gnu)
from Alexandre Oliva <aol...@redhat.com>
* ddg.c (build_intra_loop_deps): Discard deps of nondebug on debug.
--- gcc/ddg.c.orig 2012-01-04 21:06:38.000000000 -0200
+++ gcc/ddg.c 2012-04-08 02:10:44.711511989 -0300
@@ -532,7 +532,12 @@ build_intra_loop_deps (ddg_ptr g)
FOR_EACH_DEP (dest_node->insn, SD_LIST_BACK, sd_it, dep)
- ddg_node_ptr src_node = get_node_of_insn (g, DEP_PRO (dep));
+ ddg_node_ptr src_node;
+ if (DEBUG_INSN_P (DEP_PRO (dep)) && !DEBUG_INSN_P (dest_node->insn))
+ src_node = get_node_of_insn (g, DEP_PRO (dep));
Alexandre Oliva, freedom fighter http://FSFLA.org/~lxoliva/
You must be the change you wish to see in the world. -- Gandhi
Be Free! -- http://FSFLA.org/ FSF Latin America board member
Free Software Evangelist Red Hat Brazil Compiler Engineer