Avoid lang_hooks, call build_nonstandard_integer_type.
authorSebastian Pop <sebastian.pop@amd.com>
Thu, 30 Sep 2010 21:16:18 +0000 (21:16 +0000)
committerSebastian Pop <spop@gcc.gnu.org>
Thu, 30 Sep 2010 21:16:18 +0000 (21:16 +0000)
2010-07-29  Sebastian Pop  <sebastian.pop@amd.com>

* graphite-clast-to-gimple.c (max_signed_precision_type): Remove the call
to lang_hooks.types.type_for_size.  Call build_nonstandard_integer_type.

From-SVN: r164771

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

index b4a7367..20fa477 100644 (file)
@@ -1,3 +1,8 @@
+2010-09-30  Sebastian Pop  <sebastian.pop@amd.com>
+
+       * graphite-clast-to-gimple.c (max_signed_precision_type): Remove the call
+       to lang_hooks.types.type_for_size.  Call build_nonstandard_integer_type.
+
 2010-09-30  Riyadh Baghdadi <baghdadi.mr@gmail.com>
 
        * graphite-cloog-util.c (openscop_print_cloog_matrix): New.
index 50c1e13..dd37363 100644 (file)
@@ -1,3 +1,8 @@
+2010-07-29  Sebastian Pop  <sebastian.pop@amd.com>
+
+       * graphite-clast-to-gimple.c (max_signed_precision_type): Remove the call
+       to lang_hooks.types.type_for_size.  Call build_nonstandard_integer_type.
+
 2010-07-29  Riyadh Baghdadi <baghdadi.mr@gmail.com>
 
        * graphite-cloog-util.c (openscop_print_cloog_matrix): New.
index 3f26ad3..73bd971 100644 (file)
@@ -201,19 +201,29 @@ max_signed_precision_type (tree type1, tree type2)
   int p2 = TYPE_PRECISION (type2);
   int precision;
   tree type;
+  enum machine_mode mode;
 
   if (p1 > p2)
     precision = TYPE_UNSIGNED (type1) ? p1 * 2 : p1;
   else
     precision = TYPE_UNSIGNED (type2) ? p2 * 2 : p2;
 
-  type = lang_hooks.types.type_for_size (precision, false);
+  if (precision > BITS_PER_WORD)
+    {
+      gloog_error = true;
+      return integer_type_node;
+    }
+
+  mode = smallest_mode_for_size (precision, MODE_INT);
+  precision = GET_MODE_PRECISION (mode);
+  type = build_nonstandard_integer_type (precision, false);
 
   if (!type)
     {
       gloog_error = true;
       return integer_type_node;
     }
+
   return type;
 }