From 2718e70e99f2114bd67bf456459f463a1709bb62 Mon Sep 17 00:00:00 2001 From: Alexandre Oliva Date: Mon, 29 Oct 2012 19:26:16 +0000 Subject: [PATCH] re PR debug/54693 (VTA guality issues with loops) 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 | 8 ++++++++ gcc/config/i386/i386.c | 6 ++++++ 2 files changed, 14 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4127b00..94dc103 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2012-10-29 Alexandre Oliva + + 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 * config/aarch64/aarch64-protos.h (aarch64_load_tp): New proto. diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index e0994e7..6542161 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -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) -- 2.7.4