re PR bootstrap/52172 (stage 3 Bootstrap comparison failure on FreeBSD ia64)
authorJakub Jelinek <jakub@redhat.com>
Mon, 13 Feb 2012 23:31:48 +0000 (00:31 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Mon, 13 Feb 2012 23:31:48 +0000 (00:31 +0100)
PR bootstrap/52172
* cselib.h (cselib_subst_to_values_from_insn): New prototype.
* cselib.c (cselib_subst_to_values_from_insn): New function.
* sched-deps.c (add_insn_mem_dependence,
sched_analyze_1, sched_analyze_2): Use it.

From-SVN: r184181

gcc/ChangeLog
gcc/cselib.c
gcc/cselib.h
gcc/sched-deps.c

index b6e194f5d6fc01154c6e05186934008305647a90..e6dd0ca137258a575c588d559208489538770ba2 100644 (file)
@@ -1,3 +1,11 @@
+2012-02-13  Jakub Jelinek  <jakub@redhat.com>
+
+       PR bootstrap/52172
+       * cselib.h (cselib_subst_to_values_from_insn): New prototype.
+       * cselib.c (cselib_subst_to_values_from_insn): New function.
+       * sched-deps.c (add_insn_mem_dependence,
+       sched_analyze_1, sched_analyze_2): Use it.
+
 2012-02-13  Jan Hubicka  <jh@suse.cz>
 
        PR middle-end/52214
index 7d3e4ca52d8d2186bd38926ab96c15c28616a157..d7cb355fc33f9a18bb9fcf2a96f8fac6f800c60a 100644 (file)
@@ -1905,6 +1905,19 @@ cselib_subst_to_values (rtx x, enum machine_mode memmode)
   return copy;
 }
 
+/* Wrapper for cselib_subst_to_values, that indicates X is in INSN.  */
+
+rtx
+cselib_subst_to_values_from_insn (rtx x, enum machine_mode memmode, rtx insn)
+{
+  rtx ret;
+  gcc_assert (!cselib_current_insn);
+  cselib_current_insn = insn;
+  ret = cselib_subst_to_values (x, memmode);
+  cselib_current_insn = NULL;
+  return ret;
+}
+
 /* Look up the rtl expression X in our tables and return the value it
    has.  If CREATE is zero, we return NULL if we don't know the value.
    Otherwise, we create a new one if possible, using mode MODE if X
index 6a9d79537bce963e105e5c1b1c8afe3445d8db22..5b5fe23ae4039b4d28dde5d51735da5038e70650 100644 (file)
@@ -1,6 +1,6 @@
 /* Common subexpression elimination for GNU compiler.
    Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997,
-   1998, 1999, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+   1998, 1999, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
    Free Software Foundation, Inc.
 
 This file is part of GCC.
@@ -88,6 +88,7 @@ extern rtx cselib_expand_value_rtx_cb (rtx, bitmap, int,
 extern bool cselib_dummy_expand_value_rtx_cb (rtx, bitmap, int,
                                              cselib_expand_callback, void *);
 extern rtx cselib_subst_to_values (rtx, enum machine_mode);
+extern rtx cselib_subst_to_values_from_insn (rtx, enum machine_mode, rtx);
 extern void cselib_invalidate_rtx (rtx);
 
 extern void cselib_reset_table (unsigned int);
index 095bae8a956539fe349edb38a4d40cc57fad9615..33a6996fe4fca2b7bbfde0aaf187b23d94f051f0 100644 (file)
@@ -1728,7 +1728,8 @@ add_insn_mem_dependence (struct deps_desc *deps, bool read_p,
   if (sched_deps_info->use_cselib)
     {
       mem = shallow_copy_rtx (mem);
-      XEXP (mem, 0) = cselib_subst_to_values (XEXP (mem, 0), GET_MODE (mem));
+      XEXP (mem, 0) = cselib_subst_to_values_from_insn (XEXP (mem, 0),
+                                                       GET_MODE (mem), insn);
     }
   link = alloc_EXPR_LIST (VOIDmode, canon_rtx (mem), *mem_list);
   *mem_list = link;
@@ -2449,7 +2450,9 @@ sched_analyze_1 (struct deps_desc *deps, rtx x, rtx insn)
          t = shallow_copy_rtx (dest);
          cselib_lookup_from_insn (XEXP (t, 0), address_mode, 1,
                                   GET_MODE (t), insn);
-         XEXP (t, 0) = cselib_subst_to_values (XEXP (t, 0), GET_MODE (t));
+         XEXP (t, 0)
+           = cselib_subst_to_values_from_insn (XEXP (t, 0), GET_MODE (t),
+                                               insn);
        }
       t = canon_rtx (t);
 
@@ -2609,7 +2612,9 @@ sched_analyze_2 (struct deps_desc *deps, rtx x, rtx insn)
            t = shallow_copy_rtx (t);
            cselib_lookup_from_insn (XEXP (t, 0), address_mode, 1,
                                     GET_MODE (t), insn);
-           XEXP (t, 0) = cselib_subst_to_values (XEXP (t, 0), GET_MODE (t));
+           XEXP (t, 0)
+             = cselib_subst_to_values_from_insn (XEXP (t, 0), GET_MODE (t),
+                                                 insn);
          }
 
        if (!DEBUG_INSN_P (insn))