aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/gcc-interface/utils2.c
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2012-11-28 10:51:19 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2012-11-28 10:51:19 +0000
commitce3da0d0d54ce3e469828698ba1ac5f25146b6f9 (patch)
tree66a07373943672c9d9ef3f8e395acb3f21fe89cd /gcc/ada/gcc-interface/utils2.c
parentfb1fbef2735bce7c62511daf6f64343d9d97e299 (diff)
downloadgcc-ce3da0d0d54ce3e469828698ba1ac5f25146b6f9.zip
gcc-ce3da0d0d54ce3e469828698ba1ac5f25146b6f9.tar.gz
gcc-ce3da0d0d54ce3e469828698ba1ac5f25146b6f9.tar.bz2
stor-layout.c (layout_type): Do not clear TREE_OVERFLOW on overflowed zeroes, except in one specific case.
* stor-layout.c (layout_type) <ARRAY_TYPE>: Do not clear TREE_OVERFLOW on overflowed zeroes, except in one specific case. ada/ * gcc-interface/decl.c (gnat_to_gnu_entity) <object>: Use valid_constant_size_p to detect too large objects. <E_Subprogram_Type>: Likewise for too large return types. (allocatable_size_p): Call valid_constant_size_p in the fixed case. (annotate_value) <INTEGER_CST>: Simplify. <BIT_AND_EXPR>: Deal with negative values here. * gcc-interface/trans.c (gnat_to_gnu) <N_Assignment_Statement>: Use valid_constant_size_p to detect too large objects on the LHS. * gcc-interface/misc.c (default_pass_by_ref): Likewise for large types. And use TYPE_SIZE_UNIT throughout. (must_pass_by_ref): Likewise. * gcc-interface/utils.c (max_size) <tcc_unary>: Split from common case. <tcc_binary>: Likewise. Call size_binop instead of fold_build2. <tcc_expression>: Simplify. * gcc-interface/utils2.c (build_allocator): Use valid_constant_size_p to detect too large allocations. From-SVN: r193886
Diffstat (limited to 'gcc/ada/gcc-interface/utils2.c')
-rw-r--r--gcc/ada/gcc-interface/utils2.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/gcc/ada/gcc-interface/utils2.c b/gcc/ada/gcc-interface/utils2.c
index 4bb16ec..71dd8e5 100644
--- a/gcc/ada/gcc-interface/utils2.c
+++ b/gcc/ada/gcc-interface/utils2.c
@@ -2286,7 +2286,7 @@ build_allocator (tree type, tree init, tree result_type, Entity_Id gnat_proc,
init);
/* If the size overflows, pass -1 so Storage_Error will be raised. */
- if (TREE_CODE (size) == INTEGER_CST && TREE_OVERFLOW (size))
+ if (TREE_CODE (size) == INTEGER_CST && !valid_constant_size_p (size))
size = size_int (-1);
storage = build_call_alloc_dealloc (NULL_TREE, size, storage_type,
@@ -2345,7 +2345,7 @@ build_allocator (tree type, tree init, tree result_type, Entity_Id gnat_proc,
}
/* If the size overflows, pass -1 so Storage_Error will be raised. */
- if (TREE_CODE (size) == INTEGER_CST && TREE_OVERFLOW (size))
+ if (TREE_CODE (size) == INTEGER_CST && !valid_constant_size_p (size))
size = size_int (-1);
storage = convert (result_type,