aboutsummaryrefslogtreecommitdiff
path: root/gcc/calls.c
diff options
context:
space:
mode:
authorMartin Sebor <msebor@redhat.com>2018-08-28 19:09:38 +0000
committerMartin Sebor <msebor@gcc.gnu.org>2018-08-28 13:09:38 -0600
commit0aaafa5e95df44eed3ad67ea65c9afda2dbdd493 (patch)
treedbf4c33008642719c398d068222b45cd34a970c4 /gcc/calls.c
parentdd35da2cbef6d8bf9db86d7e66faeebb5022c881 (diff)
downloadgcc-0aaafa5e95df44eed3ad67ea65c9afda2dbdd493.zip
gcc-0aaafa5e95df44eed3ad67ea65c9afda2dbdd493.tar.gz
gcc-0aaafa5e95df44eed3ad67ea65c9afda2dbdd493.tar.bz2
PR middle-end/86631 - missing -Walloc-size-larger-than on ILP32 hosts
gcc/ChangeLog: PR middle-end/86631 * calls.c (alloc_max_size): Treat HOST_WIDE_INT special. * gimple-ssa-warn-alloca.c (adjusted_warn_limit): New function. (pass_walloca::gate): Use it. (alloca_call_type): Same. (pass_walloca::execute): Same. * stor-layout.c (layout_decl): Treat HOST_WIDE_INT special. gcc/testsuite/ChangeLog: PR middle-end/86631 * g++.dg/Walloca1.C: Adjust. From-SVN: r263928
Diffstat (limited to 'gcc/calls.c')
-rw-r--r--gcc/calls.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/calls.c b/gcc/calls.c
index 87e3f00..e9660b6 100644
--- a/gcc/calls.c
+++ b/gcc/calls.c
@@ -1222,8 +1222,11 @@ alloc_max_size (void)
if (alloc_object_size_limit)
return alloc_object_size_limit;
- alloc_object_size_limit
- = build_int_cst (size_type_node, warn_alloc_size_limit);
+ HOST_WIDE_INT limit = warn_alloc_size_limit;
+ if (limit == HOST_WIDE_INT_MAX)
+ limit = tree_to_shwi (TYPE_MAX_VALUE (ptrdiff_type_node));
+
+ alloc_object_size_limit = build_int_cst (size_type_node, limit);
return alloc_object_size_limit;
}