From: aoliva Date: Mon, 29 Oct 2012 19:26:16 +0000 (+0000) Subject: PR debug/54693 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9d560cf52c9dfd749f5a9ecd84db1dc83967756c;p=thirdparty%2Fgcc.git 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4127b00b7b7c..94dc1035bbfc 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 e0994e72ff66..6542161b8b77 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)