From 341e19df23701a75f32dd31c24575c85abe961c7 Mon Sep 17 00:00:00 2001
From: Vladimir Makarov <vmakarov@redhat.com>
Date: Tue, 20 Nov 2012 21:32:59 +0000
Subject: [PATCH] re PR rtl-optimization/55396 (-O2 -m32
 -fno-omit-frame-pointer: internal compiler error: in check_rtl, at
 lra.c:2007)

2012-11-20  Vladimir Makarov  <vmakarov@redhat.com>

	PR rtl-optimization/55396
	* lra-constraints.c (get_reload_reg): Change class if it is
	different from reg class.

From-SVN: r193678
---
 gcc/ChangeLog         | 6 ++++++
 gcc/lra-constraints.c | 2 +-
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 513d0493fdee..59982dfb1e67 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2012-11-20  Vladimir Makarov  <vmakarov@redhat.com>
+
+	PR rtl-optimization/55396
+	* lra-constraints.c (get_reload_reg): Change class if it is
+	different from reg class.
+
 2012-11-20  Jakub Jelinek  <jakub@redhat.com>
 
 	* vec.h (class vec_prefix): Change into struct.
diff --git a/gcc/lra-constraints.c b/gcc/lra-constraints.c
index 9df7b97a34e0..63ef155bd45b 100644
--- a/gcc/lra-constraints.c
+++ b/gcc/lra-constraints.c
@@ -425,7 +425,7 @@ get_reload_reg (enum op_type type, enum machine_mode mode, rtx original,
 	    fprintf (lra_dump_file, "	 Reuse r%d for reload ", regno);
 	    print_value_slim (lra_dump_file, original, 1);
 	  }
-	if (rclass != new_class)
+	if (new_class != lra_get_allocno_class (regno))
 	  change_class (regno, new_class, ", change", false);
 	if (lra_dump_file != NULL)
 	  fprintf (lra_dump_file, "\n");
-- 
GitLab