aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
authorJeff Law <law@redhat.com>2016-11-11 09:00:47 -0700
committerJeff Law <law@gcc.gnu.org>2016-11-11 09:00:47 -0700
commit606f928d3805614e8d2307961198706ed9958a76 (patch)
tree4536e26f7282becf16c143a8e48ebf01f2a07b83 /gcc/testsuite
parentbe2789903f67338ffa89ad26b056aae7571c850b (diff)
downloadgcc-606f928d3805614e8d2307961198706ed9958a76.zip
gcc-606f928d3805614e8d2307961198706ed9958a76.tar.gz
gcc-606f928d3805614e8d2307961198706ed9958a76.tar.bz2
gimple-ssa-isolate-paths.c (is_divmod_with_given_divisor): New function.
* gimple-ssa-isolate-paths.c (is_divmod_with_given_divisor): New function. (stmt_uses_name_in_undefined_way): New function, extracted from find_implicit_erroneous_behavior and extended for div/mod case. (stmt_uses_0_or_null_in_undefined_way): New function, extracted from find_explicit_erroneous_behavior and extended for div/mod case. (find_implicit_erroneous_behavior): Use new helper function. (find_explicit_erroneous_behavior): Use new helper function. * gcc.dg/tree-ssa/isolate-6.c: New test. * gcc.dg/tree-ssa/isolate-7.c: New test. From-SVN: r242075
Diffstat (limited to 'gcc/testsuite')
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/isolate-6.c19
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/isolate-7.c15
3 files changed, 39 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 53f27b9..6da1cd8 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2016-11-11 Jeff Law <law@redhat.com>
+
+ * gcc.dg/tree-ssa/isolate-6.c: New test.
+ * gcc.dg/tree-ssa/isolate-7.c: New test.
+
2016-11-11 Bin Cheng <bin.cheng@arm.com>
PR testsuite/78292
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/isolate-6.c b/gcc/testsuite/gcc.dg/tree-ssa/isolate-6.c
new file mode 100644
index 0000000..ec7c57a
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/isolate-6.c
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-isolate-paths" } */
+
+int x, y;
+
+static inline int
+z ()
+{
+ return x ? y : 0;
+}
+
+int
+lower_for (int j)
+{
+ return j % z ();
+}
+
+/* { dg-final { scan-tree-dump-times "__builtin_trap" 1 "isolate-paths"} } */
+
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/isolate-7.c b/gcc/testsuite/gcc.dg/tree-ssa/isolate-7.c
new file mode 100644
index 0000000..e63d5a0
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/isolate-7.c
@@ -0,0 +1,15 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-isolate-paths" } */
+
+extern int oof ();
+extern int x;
+_Bool
+gcd_of_steps_may_divide_p ()
+{
+ long cd = 0, val;
+ if (x)
+ cd = oof ();
+ return val % cd == 0;
+}
+/* { dg-final { scan-tree-dump-times "__builtin_trap" 1 "isolate-paths"} } */
+