distribute_links tries to place a log_link for whatever the destination
of the modified instruction is.  It shouldn't do that when that dest
is pc_rtx, which isn't actually a register.

Committing to trunk.


Segher


2018-03-14  Segher Boessenkool  <seg...@kernel.crashing.org>

        * combine.c (distribute_links): Don't make a link based on pc_rtx.

---
 gcc/combine.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/gcc/combine.c b/gcc/combine.c
index 0a447b9..eaebe65 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -14812,6 +14812,9 @@ distribute_links (struct insn_link *links)
             || GET_CODE (reg) == SUBREG)
        reg = XEXP (reg, 0);
 
+      if (reg == pc_rtx)
+       continue;
+
       /* A LOG_LINK is defined as being placed on the first insn that uses
         a register and points to the insn that sets the register.  Start
         searching at the next insn after the target of the link and stop
-- 
1.8.3.1

Reply via email to