------- Additional Comments From neroden at gcc dot gnu dot org 2004-11-27 18:44 ------- libcpp no longer uses HOST_WIDE_INT. The computation which leads to the error is done in c-decl.c in "target arithmetic" as follows: /* Compute the maximum valid index, that is, size - 1. Do the calculation in index_type, so that if it is a variable the computations will be done in the proper mode. */ itype = fold (build2 (MINUS_EXPR, index_type, convert (index_type, size), convert (index_type, size_one_node))); /* If that overflowed, the array is too big. ??? While a size of INT_MAX+1 technically shouldn't cause an overflow (because we subtract 1), the overflow is recorded during the conversion to index_type, before the subtraction. Handling this case seems like an unnecessary complication. */ if (TREE_OVERFLOW (itype)) { error ("size of array %qs is too large", name); type = error_mark_node; continue; } This looks OK. Steven, can you possibly check to see whether this bug still exists in mainline?
-- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16621