combine: Don't make log_links for pc_rtx (PR84780 #c10)
authorSegher Boessenkool <segher@kernel.crashing.org>
Wed, 14 Mar 2018 12:24:21 +0000 (13:24 +0100)
committerSegher Boessenkool <segher@gcc.gnu.org>
Wed, 14 Mar 2018 12:24:21 +0000 (13:24 +0100)
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.

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

From-SVN: r258523

gcc/ChangeLog
gcc/combine.c

index 104e44255e6b07500cc74d3123bfcabf98ce24e0..fcd11eb7db37ae012319343d19605b20aab07afc 100644 (file)
@@ -1,3 +1,8 @@
+2018-03-14  Segher Boessenkool  <segher@kernel.crashing.org>
+
+       PR rtl-optimization/84780
+       * combine.c (distribute_links): Don't make a link based on pc_rtx.
+
 2018-03-14  Martin Liska  <mliska@suse.cz>
 
        * tree.c (record_node_allocation_statistics): Use
index 06a9ddde8586c0a0dcaf72552a1890feb84318d4..ff672ad2adbebb37b9566c99b696bb66fcaa1639 100644 (file)
@@ -14778,6 +14778,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