From 39b4020ca1c28fb1a27813920bda7cdec3bc77f4 Mon Sep 17 00:00:00 2001
From: Richard Sandiford <rsandifo@redhat.com>
Date: Mon, 4 Apr 2005 19:42:51 +0000
Subject: [PATCH] Makefile.in (tree-ssa-loop-ivopts.o): Depend on langhooks.h.

	* Makefile.in (tree-ssa-loop-ivopts.o): Depend on langhooks.h.
	* tree-ssa-loop-ivopts.c: Include langhooks.h.
	(add_standard_iv_candidates_for_size): New function, extracting code
	from add_standard_iv_candidates and parameterizing it by type size.
	(add_standard_iv_candidates): Use add_standard_iv_candidates_for_size.

From-SVN: r97571
---
 gcc/ChangeLog              |  8 ++++++++
 gcc/Makefile.in            |  2 +-
 gcc/tree-ssa-loop-ivopts.c | 28 +++++++++++++++++-----------
 3 files changed, 26 insertions(+), 12 deletions(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 20e9b39cd584..846f6f2f012b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2004-04-04  Richard Sandiford  <rsandifo@redhat.com>
+
+	* Makefile.in (tree-ssa-loop-ivopts.o): Depend on langhooks.h.
+	* tree-ssa-loop-ivopts.c: Include langhooks.h.
+	(add_standard_iv_candidates_for_size): New function, extracting code
+	from add_standard_iv_candidates and parameterizing it by type size.
+	(add_standard_iv_candidates): Use add_standard_iv_candidates_for_size.
+
 2004-04-04  Richard Sandiford  <rsandifo@redhat.com>
 
 	* system.h (GCOV_SIZE_TYPE): Unposion.
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index 6719bb0b0b91..b73170a9427b 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -1746,7 +1746,7 @@ tree-ssa-loop-ivopts.o : tree-ssa-loop-ivopts.c $(TREE_FLOW_H) $(CONFIG_H) \
    $(SYSTEM_H) $(RTL_H) $(TREE_H) $(TM_P_H) $(CFGLOOP_H) varray.h $(EXPR_H) \
    output.h diagnostic.h $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
    tree-pass.h $(GGC_H) $(RECOG_H) insn-config.h $(HASHTAB_H) $(SCEV_H) \
-   cfgloop.h $(PARAMS_H) sbitmap.h
+   cfgloop.h $(PARAMS_H) sbitmap.h langhooks.h
 tree-ssa-loop-manip.o : tree-ssa-loop-manip.c $(TREE_FLOW_H) $(CONFIG_H) \
    $(SYSTEM_H) $(RTL_H) $(TREE_H) $(TM_P_H) $(CFGLOOP_H) \
    output.h diagnostic.h $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
diff --git a/gcc/tree-ssa-loop-ivopts.c b/gcc/tree-ssa-loop-ivopts.c
index 7853d69acd36..494b41ec736c 100644
--- a/gcc/tree-ssa-loop-ivopts.c
+++ b/gcc/tree-ssa-loop-ivopts.c
@@ -88,6 +88,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 #include "tree-scalar-evolution.h"
 #include "cfgloop.h"
 #include "params.h"
+#include "langhooks.h"
 
 /* The infinite cost.  */
 #define INFTY 10000000
@@ -1980,23 +1981,28 @@ add_candidate (struct ivopts_data *data,
     add_candidate_1 (data, base, step, important, IP_END, use, NULL_TREE);
 }
 
+/* Add a standard "0 + 1 * iteration" iv candidate for a
+   type with SIZE bits.  */
+
+static void
+add_standard_iv_candidates_for_size (struct ivopts_data *data,
+				     unsigned int size)
+{
+  tree type = lang_hooks.types.type_for_size (size, true);
+  add_candidate (data, build_int_cst (type, 0), build_int_cst (type, 1),
+		 true, NULL);
+}
+
 /* Adds standard iv candidates.  */
 
 static void
 add_standard_iv_candidates (struct ivopts_data *data)
 {
-  /* Add 0 + 1 * iteration candidate.  */
-  add_candidate (data,
-		 build_int_cst (unsigned_intSI_type_node, 0),
-      		 build_int_cst (unsigned_intSI_type_node, 1),
-		 true, NULL);
+  add_standard_iv_candidates_for_size (data, INT_TYPE_SIZE);
 
-  /* The same for a long type if it is still fast enough.  */
-  if (BITS_PER_WORD > 32)
-    add_candidate (data,
-		   build_int_cst (unsigned_intDI_type_node, 0),
-		   build_int_cst (unsigned_intDI_type_node, 1),
-		   true, NULL);
+  /* The same for a double-integer type if it is still fast enough.  */
+  if (BITS_PER_WORD >= INT_TYPE_SIZE * 2)
+    add_standard_iv_candidates_for_size (data, INT_TYPE_SIZE * 2);
 }
 
 
-- 
GitLab