diff options
author | Richard Biener <rguenther@suse.de> | 2019-09-11 11:16:54 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2019-09-11 11:16:54 +0000 |
commit | 46dfa8ad6c18feb45d35734eae38798edb7c38cd (patch) | |
tree | 827937264473170139a5e038754a1bbde166a92c /gcc/vr-values.c | |
parent | 0a237a94c206b53eb73baad2d75fbcca518df65e (diff) | |
download | gcc-46dfa8ad6c18feb45d35734eae38798edb7c38cd.zip gcc-46dfa8ad6c18feb45d35734eae38798edb7c38cd.tar.gz gcc-46dfa8ad6c18feb45d35734eae38798edb7c38cd.tar.bz2 |
re PR tree-optimization/90387 (__builtin_constant_p and -Warray-bounds warnings)
2019-09-11 Richard Biener <rguenther@suse.de>
PR tree-optimization/90387
* vr-values.c (vr_values::extract_range_basic): After inlining
simplify non-constant __builtin_constant_p to false.
* gcc.dg/Warray-bounds-44.c: New testcase.
From-SVN: r275639
Diffstat (limited to 'gcc/vr-values.c')
-rw-r--r-- | gcc/vr-values.c | 11 |
1 files changed, 2 insertions, 9 deletions
diff --git a/gcc/vr-values.c b/gcc/vr-values.c index 256cae7..0ebb6e3 100644 --- a/gcc/vr-values.c +++ b/gcc/vr-values.c @@ -1124,15 +1124,8 @@ vr_values::extract_range_basic (value_range *vr, gimple *stmt) switch (cfn) { case CFN_BUILT_IN_CONSTANT_P: - /* If the call is __builtin_constant_p and the argument is a - function parameter resolve it to false. This avoids bogus - array bound warnings. - ??? We could do this as early as inlining is finished. */ - arg = gimple_call_arg (stmt, 0); - if (TREE_CODE (arg) == SSA_NAME - && SSA_NAME_IS_DEFAULT_DEF (arg) - && TREE_CODE (SSA_NAME_VAR (arg)) == PARM_DECL - && cfun->after_inlining) + /* Resolve calls to __builtin_constant_p after inlining. */ + if (cfun->after_inlining) { vr->set_zero (type); vr->equiv_clear (); |