* ddg.c (build_intra_loop_deps): Discard deps of nondebug on debug.
authorAlexandre Oliva <aoliva@redhat.com>
Fri, 22 Jun 2012 01:30:00 +0000 (01:30 +0000)
committerAlexandre Oliva <aoliva@gcc.gnu.org>
Fri, 22 Jun 2012 01:30:00 +0000 (01:30 +0000)
From-SVN: r188867

gcc/ChangeLog
gcc/ddg.c

index 3b86f2b632342feac2c2c47567a09c5626c108a8..106872fc15ced5da1c2b9165f41f562bc4b5989a 100644 (file)
@@ -1,3 +1,7 @@
+2012-06-21  Alexandre Oliva  <aoliva@redhat.com>
+
+       * ddg.c (build_intra_loop_deps): Discard deps of nondebug on debug.
+
 2012-06-21  Alexandre Oliva  <aoliva@redhat.com>
 
        PR debug/53682
index 853f5ea91840c2669ebe8ef81233ff1b58e63597..a7d3e665a8520253788970452ffe334a15e82372 100644 (file)
--- a/gcc/ddg.c
+++ b/gcc/ddg.c
@@ -531,7 +531,15 @@ 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));
+         rtx src_insn = DEP_PRO (dep);
+         ddg_node_ptr src_node;
+
+         /* Don't add dependencies on debug insns to non-debug insns
+            to avoid codegen differences between -g and -g0.  */
+         if (DEBUG_INSN_P (src_insn) && !DEBUG_INSN_P (dest_node->insn))
+           continue;
+
+         src_node = get_node_of_insn (g, src_insn);
 
          if (!src_node)
            continue;