The following patch fixes

   https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92283

The patch has no test because it is very hard to reproduce PR and check the patch even on a specific GCC revision.

The patch was successfully bootstrapped and tested on x86-64.

Committed as r278865


Index: ChangeLog
===================================================================
--- ChangeLog	(revision 278864)
+++ ChangeLog	(working copy)
@@ -1,3 +1,9 @@
+2019-11-29  Vladimir Makarov  <vmaka...@redhat.com>
+
+	PR rtl-optimization/92283
+	* lra.c (lra): Update reg notes after inheritance sub-pass and
+	before constraint sub-pass.
+
 2019-11-29  Richard Biener  <rguent...@suse.de>
 
 	PR tree-optimization/91003
Index: lra.c
===================================================================
--- lra.c	(revision 278864)
+++ lra.c	(working copy)
@@ -2473,7 +2473,7 @@ lra (FILE *f)
 		 But don't remove dead insns or change global live
 		 info as we can undo inheritance transformations after
 		 inheritance pseudo assigning.  */
-	      lra_create_live_ranges (true, false);
+	      lra_create_live_ranges (true, !lra_simple_p);
 	      live_p = true;
 	      /* If we don't spill non-reload and non-inheritance
 		 pseudos, there is no sense to run memory-memory move
@@ -2514,6 +2514,11 @@ lra (FILE *f)
 		}
 	    }
 	  while (fails_p);
+	  if (! live_p) {
+	    /* We need the correct reg notes for work of constraint sub-pass.  */
+	    lra_create_live_ranges (true, true);
+	    live_p = true;
+	  }
 	}
       /* Don't clear optional reloads bitmap until all constraints are
 	 satisfied as we need to differ them from regular reloads.  */

Reply via email to