re PR debug/54693 (VTA guality issues with loops)
authorAlexandre Oliva <aoliva@redhat.com>
Mon, 29 Oct 2012 19:26:16 +0000 (19:26 +0000)
committerAlexandre Oliva <aoliva@gcc.gnu.org>
Mon, 29 Oct 2012 19:26:16 +0000 (19:26 +0000)
PR debug/54693
* config/i386/i386.c (add_parameter_dependencies): Stop
backward scan at the insn before the incoming head.
(ix86_dependencies_evaluation_hook): Skip debug insns.  Stop
if first_arg is head.

From-SVN: r192957

gcc/ChangeLog
gcc/config/i386/i386.c

index 4127b00..94dc103 100644 (file)
@@ -1,3 +1,11 @@
+2012-10-29  Alexandre Oliva <aoliva@redhat.com>
+
+       PR debug/54693
+       * config/i386/i386.c (add_parameter_dependencies): Stop
+       backward scan at the insn before the incoming head.
+       (ix86_dependencies_evaluation_hook): Skip debug insns.  Stop
+       if first_arg is head.
+
 2012-10-29  Andrew Pinski  <apinski@cavium.com>
 
         * config/aarch64/aarch64-protos.h (aarch64_load_tp): New proto.
index e0994e7..6542161 100644 (file)
@@ -24478,6 +24478,8 @@ add_parameter_dependencies (rtx call, rtx head)
   rtx first_arg = NULL;
   bool is_spilled = false;
 
+  head = PREV_INSN (head);
+
   /* Find nearest to call argument passing instruction.  */
   while (true)
     {
@@ -24575,6 +24577,8 @@ ix86_dependencies_evaluation_hook (rtx head, rtx tail)
   rtx first_arg = NULL;
   if (reload_completed)
     return;
+  while (head != tail && DEBUG_INSN_P (head))
+    head = NEXT_INSN (head);
   for (insn = tail; insn != head; insn = PREV_INSN (insn))
     if (INSN_P (insn) && CALL_P (insn))
       {
@@ -24603,6 +24607,8 @@ ix86_dependencies_evaluation_hook (rtx head, rtx tail)
                  }
              }
            insn = first_arg;
+           if (insn == head)
+             break;
          }
       }
     else if (first_arg)