]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
2015-06-22 Vladimir Makarov <vmakarov@redhat.com>
authorvmakarov <vmakarov@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 22 Jun 2015 18:45:58 +0000 (18:45 +0000)
committervmakarov <vmakarov@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 22 Jun 2015 18:45:58 +0000 (18:45 +0000)
PR bootstrap/63740
* lra-lives.c (process_bb_lives): Check insn copying the same
reload pseudo and don't create a copy for it.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@224753 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/lra-lives.c

index 8f20c77dd4abd7acb53355a8e671202367069884..05ed274a9f7bebddc6838df03c96c041bf2a32ee 100644 (file)
@@ -1,3 +1,9 @@
+2015-06-22  Vladimir Makarov  <vmakarov@redhat.com>
+
+       PR bootstrap/63740
+       * lra-lives.c (process_bb_lives): Check insn copying the same
+       reload pseudo and don't create a copy for it.
+
 2015-06-22  Tom de Vries  <tom@codesourcery.com>
 
        * tree-parloops.c (transform_to_exit_first_loop_alt): Add update_stmt
index 16e1f386b3e620b047753c55fe1835ae821d224a..5157c85895e18ae2b8f90ba1945141d7ebd497fa 100644 (file)
@@ -768,7 +768,15 @@ process_bb_lives (basic_block bb, int &curr_point, bool dead_insn_p)
          dst_regno = REGNO (SET_DEST (set));
          if (dst_regno >= lra_constraint_new_regno_start
              && src_regno >= lra_constraint_new_regno_start)
-           lra_create_copy (dst_regno, src_regno, freq);
+           {
+             /* It might be still an original (non-reload) insn with
+                one unused output and a constraint requiring to use
+                the same reg for input/output operands. In this case
+                dst_regno and src_regno have the same value, we don't
+                need a misleading copy for this case.  */
+             if (dst_regno != src_regno)
+               lra_create_copy (dst_regno, src_regno, freq);
+           }
          else if (dst_regno >= lra_constraint_new_regno_start)
            {
              if ((hard_regno = src_regno) >= FIRST_PSEUDO_REGISTER)