aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimple-ssa-warn-alloca.c
diff options
context:
space:
mode:
authorMarek Polacek <polacek@redhat.com>2017-03-07 17:30:53 +0000
committerMarek Polacek <mpolacek@gcc.gnu.org>2017-03-07 17:30:53 +0000
commitd8a90142db624db1f1db43de334e98d02a4dcfd2 (patch)
treeb506863f823b1b90ca1ad85d57dff8f3092d452d /gcc/gimple-ssa-warn-alloca.c
parentec38330401cb7579471079424a62c644d41c0dc3 (diff)
downloadgcc-d8a90142db624db1f1db43de334e98d02a4dcfd2.zip
gcc-d8a90142db624db1f1db43de334e98d02a4dcfd2.tar.gz
gcc-d8a90142db624db1f1db43de334e98d02a4dcfd2.tar.bz2
re PR middle-end/79809 (ICE in alloca_call_type, at gimple-ssa-warn-alloca.c:282)
PR middle-end/79809 * gimple-ssa-warn-alloca.c (pass_walloca::gate): Use HOST_WIDE_INT. (alloca_call_type): Likewise. * g++.dg/Walloca1.C: New test. From-SVN: r245955
Diffstat (limited to 'gcc/gimple-ssa-warn-alloca.c')
-rw-r--r--gcc/gimple-ssa-warn-alloca.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/gcc/gimple-ssa-warn-alloca.c b/gcc/gimple-ssa-warn-alloca.c
index d553a34..dd41775 100644
--- a/gcc/gimple-ssa-warn-alloca.c
+++ b/gcc/gimple-ssa-warn-alloca.c
@@ -78,7 +78,8 @@ pass_walloca::gate (function *fun ATTRIBUTE_UNUSED)
if (first_time_p)
return warn_alloca != 0;
- return warn_alloca_limit > 0 || warn_vla_limit > 0;
+ return ((unsigned HOST_WIDE_INT) warn_alloca_limit > 0
+ || (unsigned HOST_WIDE_INT) warn_vla_limit > 0);
}
// Possible problematic uses of alloca.
@@ -278,8 +279,8 @@ alloca_call_type (gimple *stmt, bool is_vla, tree *invalid_casted_type)
wide_int min, max;
struct alloca_type_and_limit ret = alloca_type_and_limit (ALLOCA_UNBOUNDED);
- gcc_assert (!is_vla || warn_vla_limit > 0);
- gcc_assert (is_vla || warn_alloca_limit > 0);
+ gcc_assert (!is_vla || (unsigned HOST_WIDE_INT) warn_vla_limit > 0);
+ gcc_assert (is_vla || (unsigned HOST_WIDE_INT) warn_alloca_limit > 0);
// Adjust warn_alloca_max_size for VLAs, by taking the underlying
// type into account.