re PR middle-end/68066 (ICE in max_value, at wide-int.cc)
authorIlya Enkovich <enkovich.gnu@gmail.com>
Fri, 23 Oct 2015 13:38:16 +0000 (13:38 +0000)
committerIlya Enkovich <ienkovich@gcc.gnu.org>
Fri, 23 Oct 2015 13:38:16 +0000 (13:38 +0000)
gcc/

PR middle-end/68066
* tree.c (build_truth_vector_type): Support BLK mode
returned for boolean vector.

From-SVN: r229256

gcc/ChangeLog
gcc/tree.c

index 52dca17a557534c2b86bec9d3096e47838c470b9..54359a0f0f65177dcf4496447114e4910de6af3e 100644 (file)
@@ -1,3 +1,9 @@
+2015-10-23  Ilya Enkovich  <enkovich.gnu@gmail.com>
+
+       PR middle-end/68066
+       * tree.c (build_truth_vector_type): Support BLK mode
+       returned for boolean vector.
+
 2015-10-23  Alan Hayward <alan.hayward@arm.com>
 
        PR tree-optimization/65947
index 09df67ebf881c3eb2700816e011293624f89f17b..79bbd0752c8112ee8e7e62d59f331c23fdc9cd93 100644 (file)
@@ -10671,8 +10671,14 @@ build_truth_vector_type (unsigned nunits, unsigned vector_size)
 
   gcc_assert (mask_mode != VOIDmode);
 
-  unsigned HOST_WIDE_INT esize = GET_MODE_BITSIZE (mask_mode) / nunits;
-  gcc_assert (esize * nunits == GET_MODE_BITSIZE (mask_mode));
+  unsigned HOST_WIDE_INT vsize;
+  if (mask_mode == BLKmode)
+    vsize = vector_size * BITS_PER_UNIT;
+  else
+    vsize = GET_MODE_BITSIZE (mask_mode);
+
+  unsigned HOST_WIDE_INT esize = vsize / nunits;
+  gcc_assert (esize * nunits == vsize);
 
   tree bool_type = build_nonstandard_boolean_type (esize);