+2005-06-19 Roger Sayle <roger@eyesopen.com>
+
+ * c-decl.c (grokdeclarator): Only check TREE_OVERFLOW on
+ INTEGER_CST nodes.
+ * c-typeck.c (build_c_cast): Only preserve TREE_OVERFLOW on
+ CONSTANT_CLASS_P nodes.
+
2005-06-19 Richard Henderson <rth@redhat.com>
* config/ia64/vect.md (vec_extractv2sf_1): Fix cut-and-paste error;
index_type, before the subtraction. Handling
this case seems like an unnecessary
complication. */
- if (TREE_OVERFLOW (itype))
+ if (TREE_CODE (itype) == INTEGER_CST
+ && TREE_OVERFLOW (itype))
{
error ("size of array %qs is too large", name);
type = error_mark_node;
if (TREE_CODE (type) == ARRAY_TYPE
&& COMPLETE_TYPE_P (type)
+ && TREE_CODE (TYPE_SIZE (type)) == INTEGER_CST
&& TREE_OVERFLOW (TYPE_SIZE (type)))
{
error ("size of array %qs is too large", name);
/* Ignore any integer overflow caused by the cast. */
if (TREE_CODE (value) == INTEGER_CST)
{
- if (EXPR_P (ovalue))
- /* If OVALUE had overflow set, then so will VALUE, so it
- is safe to overwrite. */
- TREE_OVERFLOW (value) = TREE_OVERFLOW (ovalue);
+ /* If OVALUE had overflow set, then so will VALUE, so it
+ is safe to overwrite. */
+ if (CONSTANT_CLASS_P (ovalue))
+ {
+ TREE_OVERFLOW (value) = TREE_OVERFLOW (ovalue);
+ /* Similarly, constant_overflow cannot have become cleared. */
+ TREE_CONSTANT_OVERFLOW (value) = TREE_CONSTANT_OVERFLOW (ovalue);
+ }
else
TREE_OVERFLOW (value) = 0;
-
- if (CONSTANT_CLASS_P (ovalue))
- /* Similarly, constant_overflow cannot have become
- cleared. */
- TREE_CONSTANT_OVERFLOW (value) = TREE_CONSTANT_OVERFLOW (ovalue);
}
}