diff options
author | Kugan Vivekanandarajah <kuganv@linaro.org> | 2016-10-21 20:13:55 +0000 |
---|---|---|
committer | Kugan Vivekanandarajah <kugan@gcc.gnu.org> | 2016-10-21 20:13:55 +0000 |
commit | f75036994f9d6945265d02cb29de502d6d7d538d (patch) | |
tree | cb421f8cf6590fce9a7ae6c57b2f3ba94212cd4b /gcc/ipa-prop.c | |
parent | e597e0533d69081e6d6b01ca19f2924c1b8307ff (diff) | |
download | gcc-f75036994f9d6945265d02cb29de502d6d7d538d.zip gcc-f75036994f9d6945265d02cb29de502d6d7d538d.tar.gz gcc-f75036994f9d6945265d02cb29de502d6d7d538d.tar.bz2 |
ADDR_EXPR and nonnull
ADDR_EXPR and nonnull
gcc/ChangeLog:
2016-10-21 Kugan Vivekanandarajah <kuganv@linaro.org>
* ipa-prop.c (ipa_compute_jump_functions_for_edge): Create nonzero
value range for pointers in more cases.
gcc/testsuite/ChangeLog:
2016-10-21 Kugan Vivekanandarajah <kuganv@linaro.org>
* gcc.dg/ipa/vrp5.c: New test.
* gcc.dg/ipa/vrp6.c: New test.
From-SVN: r241428
Diffstat (limited to 'gcc/ipa-prop.c')
-rw-r--r-- | gcc/ipa-prop.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/ipa-prop.c b/gcc/ipa-prop.c index 353b638..1629870 100644 --- a/gcc/ipa-prop.c +++ b/gcc/ipa-prop.c @@ -1670,9 +1670,17 @@ ipa_compute_jump_functions_for_edge (struct ipa_func_body_info *fbi, if (POINTER_TYPE_P (TREE_TYPE (arg))) { + bool addr_nonzero = false; + bool strict_overflow = false; + if (TREE_CODE (arg) == SSA_NAME && param_type && get_ptr_nonnull (arg)) + addr_nonzero = true; + else if (tree_single_nonzero_warnv_p (arg, &strict_overflow)) + addr_nonzero = true; + + if (addr_nonzero) { jfunc->vr_known = true; jfunc->m_vr.type = VR_ANTI_RANGE; |