The attached patch to gcse.c merely strengthens various things from rtx
to rtx_insn *, and thus falls under the pre-approval granted by Jeff
here:
  https://gcc.gnu.org/ml/gcc-patches/2014-08/msg01310.html

Bootstrapped on x86_64-unknown-linux-gnu (Fedora 20), and has been
rebuilt as part of a config-list.mk build for all working configurations
(albeit with other patches for the latter case).

Committed to trunk as r215027

Index: gcc/ChangeLog
===================================================================
--- gcc/ChangeLog	(revision 215026)
+++ gcc/ChangeLog	(revision 215027)
@@ -1,3 +1,15 @@
+2014-09-08  David Malcolm  <dmalc...@redhat.com>
+
+	* gcse.c (modify_mem_list): Strengthen this variable from
+	vec<rtx> * to vec<rtx_insn *> *.
+	(vec_rtx_heap): Strengthen this typedef from vec<rtx> to
+	vec<rtx_insn *>.
+	(load_killed_in_block_p): Strengthen local "list" from vec<rtx> to
+	vec<rtx_insn *>, and local "setter" from rtx to rtx_insn *.
+	(record_last_mem_set_info): Strengthen param "insn" from rtx to
+	rtx_insn *.
+	(record_last_set_info): Likewise for local "last_set_insn".
+
 2014-09-08  DJ Delorie  <d...@redhat.com>
 
 	* doc/invoke.texi (MSP430 Options): Add -minrt.
Index: gcc/gcse.c
===================================================================
--- gcc/gcse.c	(revision 215026)
+++ gcc/gcse.c	(revision 215027)
@@ -395,7 +395,7 @@
 
 /* Array, indexed by basic block number for a list of insns which modify
    memory within that block.  */
-static vec<rtx> *modify_mem_list;
+static vec<rtx_insn *> *modify_mem_list;
 static bitmap modify_mem_list_set;
 
 typedef struct modify_pair_s
@@ -474,7 +474,7 @@
 				  int, struct hash_table_d *);
 static unsigned int hash_expr (const_rtx, enum machine_mode, int *, int);
 static void record_last_reg_set_info (rtx, int);
-static void record_last_mem_set_info (rtx);
+static void record_last_mem_set_info (rtx_insn *);
 static void record_last_set_info (rtx, const_rtx, void *);
 static void compute_hash_table (struct hash_table_d *);
 static void alloc_hash_table (struct hash_table_d *);
@@ -631,7 +631,7 @@
   /* Allocate array to keep a list of insns which modify memory in each
      basic block.  The two typedefs are needed to work around the
      pre-processor limitation with template types in macro arguments.  */
-  typedef vec<rtx> vec_rtx_heap;
+  typedef vec<rtx_insn *> vec_rtx_heap;
   typedef vec<modify_pair> vec_modify_pair_heap;
   modify_mem_list = GCNEWVEC (vec_rtx_heap, last_basic_block_for_fn (cfun));
   canon_modify_mem_list = GCNEWVEC (vec_modify_pair_heap,
@@ -1031,8 +1031,8 @@
 load_killed_in_block_p (const_basic_block bb, int uid_limit, const_rtx x,
 			int avail_p)
 {
-  vec<rtx> list = modify_mem_list[bb->index];
-  rtx setter;
+  vec<rtx_insn *> list = modify_mem_list[bb->index];
+  rtx_insn *setter;
   unsigned ix;
 
   /* If this is a readonly then we aren't going to be changing it.  */
@@ -1502,7 +1502,7 @@
    a CALL_INSN).  We merely need to record which insns modify memory.  */
 
 static void
-record_last_mem_set_info (rtx insn)
+record_last_mem_set_info (rtx_insn *insn)
 {
   int bb;
 
@@ -1528,7 +1528,7 @@
 static void
 record_last_set_info (rtx dest, const_rtx setter ATTRIBUTE_UNUSED, void *data)
 {
-  rtx last_set_insn = (rtx) data;
+  rtx_insn *last_set_insn = (rtx_insn *) data;
 
   if (GET_CODE (dest) == SUBREG)
     dest = SUBREG_REG (dest);

Reply via email to