OSDN Git Service

Use ssizetype when long_long_integer_type_node is NULL.
authorspop <spop@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 13 Mar 2010 17:35:29 +0000 (17:35 +0000)
committerMasaki Muranaka <monaka@monami-software.com>
Sun, 23 May 2010 05:12:25 +0000 (14:12 +0900)
2010-03-11  Sebastian Pop  <sebastian.pop@amd.com>

* graphite-clast-to-gimple.c (my_long_long): Defined.
(gcc_type_for_cloog_iv): Use it instead of long_long_integer_type_node.
* graphite-sese-to-poly.c (my_long_long): Defined.
(scop_ivs_can_be_represented): Use it.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@157438 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog.graphite
gcc/graphite-clast-to-gimple.c

index 75fe38f..abd9888 100644 (file)
@@ -1,3 +1,10 @@
+2010-03-11  Sebastian Pop  <sebastian.pop@amd.com>
+
+       * graphite-clast-to-gimple.c (my_long_long): Defined.
+       (gcc_type_for_cloog_iv): Use it instead of long_long_integer_type_node.
+       * graphite-sese-to-poly.c (my_long_long): Defined.
+       (scop_ivs_can_be_represented): Use it.
+
 2010-03-10  Sebastian Pop  <sebastian.pop@amd.com>
 
        * doc/invoke.texi: Fix documentation of graphite-max-nb-scop-params,
index 340c8fc..09c703b 100644 (file)
@@ -718,6 +718,13 @@ compute_bounds_for_level (poly_bb_p pbb, int level, mpz_t low, mpz_t up)
 /* Compute the type for the induction variable at LEVEL for the
    statement PBB, based on the transformed schedule of PBB.  OLD_TYPE
    is the type of the old induction variable for that loop.  */
+/* Java does not initialize long_long_integer_type_node.  */
+#define my_long_long (long_long_integer_type_node ? long_long_integer_type_node : ssizetype)
+
+/* Given a CLOOG_IV, return the type that CLOOG_IV should have in GCC
+   land.  The selected type is big enough to include the original loop
+   iteration variable, but signed to work with the subtractions CLooG
+   may have introduced.  If such a type is not available, we fail.
 
 static tree
 compute_type_for_level_1 (poly_bb_p pbb, int level, tree old_type)
@@ -775,17 +782,19 @@ clast_get_body_of_loop (struct clast_stmt *stmt)
   if (CLAST_STMT_IS_A (stmt, stmt_for))
     return clast_get_body_of_loop (((struct clast_for *) stmt)->body);
 
-  if (CLAST_STMT_IS_A (stmt, stmt_guard))
-    return clast_get_body_of_loop (((struct clast_guard *) stmt)->then);
+      if (type_precision < TYPE_PRECISION (my_long_long))
+       return my_long_long;
 
   if (CLAST_STMT_IS_A (stmt, stmt_block))
     return clast_get_body_of_loop (((struct clast_block *) stmt)->body);
 
-  gcc_unreachable ();
+  return my_long_long;
 }
 
-/* Returns the type for the induction variable for the loop translated
-   from STMT_FOR.  */
+#undef my_long_long
+
+/* Returns the induction variable for the loop that gets translated to
+   STMT.  */
 
 static tree
 gcc_type_for_iv_of_clast_loop (struct clast_for *stmt_for, int level,