diff options
author | Alexandre Oliva <aoliva@redhat.com> | 2012-10-29 19:26:16 +0000 |
---|---|---|
committer | Alexandre Oliva <aoliva@gcc.gnu.org> | 2012-10-29 19:26:16 +0000 |
commit | 2718e70e99f2114bd67bf456459f463a1709bb62 (patch) | |
tree | 9a98e3a4f5b2429c6e2b8e2c59128d0944ba0ef9 /gcc | |
parent | 8fe91dea4fcf4b12f6d8bb6b0ea8510c2b9b53ce (diff) | |
download | gcc-2718e70e99f2114bd67bf456459f463a1709bb62.zip gcc-2718e70e99f2114bd67bf456459f463a1709bb62.tar.gz gcc-2718e70e99f2114bd67bf456459f463a1709bb62.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/config/i386/i386.c | 6 |
2 files changed, 14 insertions, 0 deletions
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 <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. 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) |