From: Aldy Hernandez Date: Thu, 8 Feb 2018 11:16:25 +0000 (+0000) Subject: re PR tree-optimization/84224 (ICE in execute, at gimple-ssa-warn-alloca.c:448) X-Git-Tag: upstream/12.2.0~33539 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=eacac712e337690ee21ce37fd06b2fe8b10a58f1;p=platform%2Fupstream%2Fgcc.git re PR tree-optimization/84224 (ICE in execute, at gimple-ssa-warn-alloca.c:448) PR tree-optimization/84224 * gimple-ssa-warn-alloca.c (pass_walloca::execute): Remove assert. * calls.c (gimple_alloca_call_p): Only return TRUE when we have non-zero arguments. From-SVN: r257480 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e51ba4f..84bf970 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2018-02-08 Aldy Hernandez + + PR tree-optimization/84224 + * gimple-ssa-warn-alloca.c (pass_walloca::execute): Remove assert. + * calls.c (gimple_alloca_call_p): Only return TRUE when we have + non-zero arguments. + 2018-02-07 Iain Sandoe * config/rs6000/altivec.md (*restore_world): Remove LR use. diff --git a/gcc/calls.c b/gcc/calls.c index 54fea15..19c95b8 100644 --- a/gcc/calls.c +++ b/gcc/calls.c @@ -730,7 +730,7 @@ gimple_alloca_call_p (const gimple *stmt) switch (DECL_FUNCTION_CODE (fndecl)) { CASE_BUILT_IN_ALLOCA: - return true; + return gimple_call_num_args (stmt) > 0; default: break; } diff --git a/gcc/gimple-ssa-warn-alloca.c b/gcc/gimple-ssa-warn-alloca.c index 941810a..327c806 100644 --- a/gcc/gimple-ssa-warn-alloca.c +++ b/gcc/gimple-ssa-warn-alloca.c @@ -445,7 +445,6 @@ pass_walloca::execute (function *fun) if (!gimple_alloca_call_p (stmt)) continue; - gcc_assert (gimple_call_num_args (stmt) >= 1); const bool is_vla = gimple_call_alloca_for_var_p (as_a (stmt)); diff --git a/gcc/testsuite/gcc.dg/Walloca-16.c b/gcc/testsuite/gcc.dg/Walloca-16.c new file mode 100644 index 0000000..3ee96a9 --- /dev/null +++ b/gcc/testsuite/gcc.dg/Walloca-16.c @@ -0,0 +1,6 @@ +/* PR tree-optimization/84224 */ +/* { dg-do compile } */ +/* { dg-options "-O0 -Walloca" } */ + +void *alloca (); +__typeof__(alloca ()) a () { return alloca (); }