From a4f436ffbb6a31d9aa56e4bebb7ccd9f7cf3bfe5 Mon Sep 17 00:00:00 2001
From: Jakub Jelinek <jakub@redhat.com>
Date: Mon, 2 Jan 2012 23:17:02 +0100
Subject: [PATCH] re PR bootstrap/51725 (segfault in stage 3 when compiling
 gcc/opts.c for sparc64-linux)

	PR bootstrap/51725
	* cselib.c (add_mem_for_addr): Call canonical_cselib_val
	on mem_elt first.

From-SVN: r182819
---
 gcc/ChangeLog | 6 ++++++
 gcc/cselib.c  | 6 ++++--
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 28db5f9ec489..a53f8845753b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2012-01-02  Jakub Jelinek  <jakub@redhat.com>
+
+	PR bootstrap/51725
+	* cselib.c (add_mem_for_addr): Call canonical_cselib_val
+	on mem_elt first.
+
 2012-01-02  Sandra Loosemore  <sandra@codesourcery.com>
 
 	* doc/invoke.texi (-flto and related options): Copy-edit.
diff --git a/gcc/cselib.c b/gcc/cselib.c
index 4324ffe50297..fc86ef1affeb 100644
--- a/gcc/cselib.c
+++ b/gcc/cselib.c
@@ -1,7 +1,7 @@
 /* Common subexpression elimination library for GNU compiler.
    Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-   1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
-   Free Software Foundation, Inc.
+   1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011,
+   2012 Free Software Foundation, Inc.
 
 This file is part of GCC.
 
@@ -1264,6 +1264,8 @@ add_mem_for_addr (cselib_val *addr_elt, cselib_val *mem_elt, rtx x)
 {
   struct elt_loc_list *l;
 
+  mem_elt = canonical_cselib_val (mem_elt);
+
   /* Avoid duplicates.  */
   for (l = mem_elt->locs; l; l = l->next)
     if (MEM_P (l->loc)
-- 
GitLab