Patch to fix PR92283

Message ID 4ff6c9c9-e8a7-92f8-4eed-d01465004019@redhat.com
State New
Headers show
Series
  • Patch to fix PR92283
Related show

Commit Message

Vladimir Makarov Nov. 29, 2019, 10:11 p.m.
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

Patch

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 278864)
+++ ChangeLog	(working copy)
@@ -1,3 +1,9 @@ 
+2019-11-29  Vladimir Makarov  <vmakarov@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  <rguenther@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.  */