From 9d560cf52c9dfd749f5a9ecd84db1dc83967756c Mon Sep 17 00:00:00 2001 From: aoliva Date: Mon, 29 Oct 2012 19:26:16 +0000 Subject: [PATCH] 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@192957 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 8 ++++++++ gcc/config/i386/i386.c | 6 ++++++ 2 files changed, 14 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4127b00b7b7..94dc1035bbf 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 e0994e72ff6..6542161b8b7 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.11.4.GIT