aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKugan Vivekanandarajah <kuganv@linaro.org>2016-09-20 23:41:01 +0000
committerKugan Vivekanandarajah <kugan@gcc.gnu.org>2016-09-20 23:41:01 +0000
commita03df1d582cef758fb03089a2c0b33cb8b1df6b6 (patch)
tree55bb949e1c68b5bfb5b1acc8411ec489bd6a595f
parent8bc5448f39ccd26b6f06cd7120f09c2254bac3be (diff)
downloadgcc-a03df1d582cef758fb03089a2c0b33cb8b1df6b6.zip
gcc-a03df1d582cef758fb03089a2c0b33cb8b1df6b6.tar.gz
gcc-a03df1d582cef758fb03089a2c0b33cb8b1df6b6.tar.bz2
Use ipa-vrp result in tree-vrp
gcc/ChangeLog: 2016-09-21 Kugan Vivekanandarajah <kuganv@linaro.org> * tree-vrp.c (get_value_range): Teach PARM_DECL to use ipa-vrp results. gcc/testsuite/ChangeLog: 2016-09-21 Kugan Vivekanandarajah <kuganv@linaro.org> * gcc.dg/guality/pr54519-1.c: Add -fno-ipa-vrp. Else constant arguments/compare will be optimized away. * gcc.dg/torture/ftrapv-1.c: Likewise. From-SVN: r240293
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/gcc.dg/guality/pr54519-1.c2
-rw-r--r--gcc/testsuite/gcc.dg/torture/ftrapv-1.c2
-rw-r--r--gcc/tree-vrp.c12
5 files changed, 25 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a3118fc..4f2f973 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
2016-09-21 Kugan Vivekanandarajah <kuganv@linaro.org>
+ * tree-vrp.c (get_value_range): Teach PARM_DECL to use ipa-vrp
+ results.
+
+2016-09-21 Kugan Vivekanandarajah <kuganv@linaro.org>
+
* common.opt: New option -fipa-vrp.
* ipa-cp.c (ipa_get_vr_lat): New.
(ipcp_vr_lattice::print): Likewise.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 936c48c..006607b 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,11 @@
2016-09-21 Kugan Vivekanandarajah <kuganv@linaro.org>
+ * gcc.dg/guality/pr54519-1.c: Add -fno-ipa-vrp. Else constant
+ arguments/compare will be optimized away.
+ * gcc.dg/torture/ftrapv-1.c: Likewise.
+
+2016-09-21 Kugan Vivekanandarajah <kuganv@linaro.org>
+
* g++.dg/ipa/pure-const-3.C: Add -fno-ipa-vrp. Else constant arguments
will be optimized away.
* gcc.dg/ipa/vrp1.c: New test.
diff --git a/gcc/testsuite/gcc.dg/guality/pr54519-1.c b/gcc/testsuite/gcc.dg/guality/pr54519-1.c
index 98afd45..e98dcb9 100644
--- a/gcc/testsuite/gcc.dg/guality/pr54519-1.c
+++ b/gcc/testsuite/gcc.dg/guality/pr54519-1.c
@@ -1,6 +1,6 @@
/* PR debug/54519 */
/* { dg-do run } */
-/* { dg-options "-g" } */
+/* { dg-options "-g -fno-ipa-vrp" } */
__attribute__((noinline, noclone)) void
fn1 (int x)
diff --git a/gcc/testsuite/gcc.dg/torture/ftrapv-1.c b/gcc/testsuite/gcc.dg/torture/ftrapv-1.c
index c74535f..66fa33f 100644
--- a/gcc/testsuite/gcc.dg/torture/ftrapv-1.c
+++ b/gcc/testsuite/gcc.dg/torture/ftrapv-1.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-additional-options "-ftrapv" } */
+/* { dg-additional-options "-ftrapv -fno-ipa-vrp" } */
/* { dg-require-effective-target trapping } */
/* { dg-require-fork "" } */
diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c
index e779759..3c75a0d 100644
--- a/gcc/tree-vrp.c
+++ b/gcc/tree-vrp.c
@@ -687,6 +687,18 @@ get_value_range (const_tree var)
if (POINTER_TYPE_P (TREE_TYPE (sym))
&& nonnull_arg_p (sym))
set_value_range_to_nonnull (vr, TREE_TYPE (sym));
+ else if (INTEGRAL_TYPE_P (TREE_TYPE (sym)))
+ {
+ wide_int min, max;
+ value_range_type rtype = get_range_info (var, &min, &max);
+ if (rtype == VR_RANGE || rtype == VR_ANTI_RANGE)
+ set_value_range (vr, rtype,
+ wide_int_to_tree (TREE_TYPE (var), min),
+ wide_int_to_tree (TREE_TYPE (var), max),
+ NULL);
+ else
+ set_value_range_to_varying (vr);
+ }
else
set_value_range_to_varying (vr);
}