re PR tree-optimization/80109 (ICE in get_range_info, at tree-ssanames.c:375)
PR tree-optimization/80109 * gimple-ssa-warn-alloca.c (alloca_call_type): Only call get_range_info on INTEGRAL_TYPE_P. * gcc.dg/Walloca-14.c: New test. Co-Authored-By: Martin Sebor <msebor@redhat.com> From-SVN: r246325
This commit is contained in:
parent
85106b8757
commit
edc1747f1f
|
@ -1,3 +1,10 @@
|
||||||
|
2017-03-21 Marek Polacek <polacek@redhat.com>
|
||||||
|
Martin Sebor <msebor@redhat.com>
|
||||||
|
|
||||||
|
PR tree-optimization/80109
|
||||||
|
* gimple-ssa-warn-alloca.c (alloca_call_type): Only call get_range_info
|
||||||
|
on INTEGRAL_TYPE_P.
|
||||||
|
|
||||||
2017-03-21 Jakub Jelinek <jakub@redhat.com>
|
2017-03-21 Jakub Jelinek <jakub@redhat.com>
|
||||||
Segher Boessenkool <segher@kernel.crashing.org>
|
Segher Boessenkool <segher@kernel.crashing.org>
|
||||||
|
|
||||||
|
|
|
@ -327,11 +327,20 @@ alloca_call_type (gimple *stmt, bool is_vla, tree *invalid_casted_type)
|
||||||
// away with better range information. But it gets
|
// away with better range information. But it gets
|
||||||
// most of the cases.
|
// most of the cases.
|
||||||
gimple *def = SSA_NAME_DEF_STMT (len);
|
gimple *def = SSA_NAME_DEF_STMT (len);
|
||||||
if (gimple_assign_cast_p (def)
|
if (gimple_assign_cast_p (def))
|
||||||
&& TYPE_UNSIGNED (TREE_TYPE (gimple_assign_rhs1 (def))))
|
|
||||||
{
|
{
|
||||||
len_casted = gimple_assign_rhs1 (def);
|
tree rhs1 = gimple_assign_rhs1 (def);
|
||||||
range_type = get_range_info (len_casted, &min, &max);
|
tree rhs1type = TREE_TYPE (rhs1);
|
||||||
|
|
||||||
|
// Bail if the argument type is not valid.
|
||||||
|
if (!INTEGRAL_TYPE_P (rhs1type))
|
||||||
|
return alloca_type_and_limit (ALLOCA_OK);
|
||||||
|
|
||||||
|
if (TYPE_UNSIGNED (rhs1type))
|
||||||
|
{
|
||||||
|
len_casted = rhs1;
|
||||||
|
range_type = get_range_info (len_casted, &min, &max);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// An unknown range or a range of the entire domain is
|
// An unknown range or a range of the entire domain is
|
||||||
// really no range at all.
|
// really no range at all.
|
||||||
|
|
|
@ -1,3 +1,9 @@
|
||||||
|
2017-03-21 Marek Polacek <polacek@redhat.com>
|
||||||
|
Martin Sebor <msebor@redhat.com>
|
||||||
|
|
||||||
|
PR tree-optimization/80109
|
||||||
|
* gcc.dg/Walloca-14.c: New test.
|
||||||
|
|
||||||
2017-03-21 Jakub Jelinek <jakub@redhat.com>
|
2017-03-21 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
PR target/80125
|
PR target/80125
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
/* PR tree-optimization/80109 */
|
||||||
|
/* { dg-do compile } */
|
||||||
|
/* { dg-options "-O2 -Walloca-larger-than=126812070" } */
|
||||||
|
|
||||||
|
void
|
||||||
|
g (int *p)
|
||||||
|
{
|
||||||
|
extern void f (void *);
|
||||||
|
|
||||||
|
void *q = __builtin_alloca (p); /* { dg-warning "passing argument 1" } */
|
||||||
|
f (q);
|
||||||
|
}
|
Loading…
Reference in New Issue