OSDN Git Service

Bail out rather than crashing in array_type_nelts if TYPE_MAX_VALUE is null.
authorbaldrick <baldrick@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 9 Apr 2011 16:14:07 +0000 (16:14 +0000)
committerbaldrick <baldrick@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 9 Apr 2011 16:14:07 +0000 (16:14 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172226 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/tree.c

index 714ae98..deabb9e 100644 (file)
@@ -1,3 +1,7 @@
+2011-04-09  Duncan Sands  <baldrick@free.fr>
+
+       * tree.c (array_type_nelts): Bail out if TYPE_MAX_VALUE not set.
+
 2011-04-08  Steven G. Kargl  <kargl@gcc.gnu.org>
 
        PR target/47829
index 405b549..4d6ca36 100644 (file)
@@ -2453,6 +2453,10 @@ array_type_nelts (const_tree type)
   min = TYPE_MIN_VALUE (index_type);
   max = TYPE_MAX_VALUE (index_type);
 
+  /* TYPE_MAX_VALUE may not be set if the array has unknown length.  */
+  if (!max)
+    return error_mark_node;
+
   return (integer_zerop (min)
          ? max
          : fold_build2 (MINUS_EXPR, TREE_TYPE (max), max, min));