aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimple-predicate-analysis.cc
diff options
context:
space:
mode:
authorMartin Sebor <msebor@redhat.com>2021-09-19 17:18:48 -0600
committerMartin Sebor <msebor@redhat.com>2021-09-19 17:23:19 -0600
commit825293da703aa1f7ce870b40afce91c1e8b6c0fa (patch)
tree419171fefd734ad0827c7dc6c45fe2e4fa111e57 /gcc/gimple-predicate-analysis.cc
parentc3895ef466f3068cac6f5c18b55716f494484917 (diff)
downloadgcc-825293da703aa1f7ce870b40afce91c1e8b6c0fa.zip
gcc-825293da703aa1f7ce870b40afce91c1e8b6c0fa.tar.gz
gcc-825293da703aa1f7ce870b40afce91c1e8b6c0fa.tar.bz2
Correct a function pre/postcondition [PR102403].
Resolves: PR middle-end/102403 - ICE in init_from_control_deps, at gimple-predicate-analysis.cc:2364 gcc/ChangeLog: PR middle-end/102403 * gimple-predicate-analysis.cc (predicate::init_from_control_deps): Correct a function pre/postcondition. gcc/testsuite/ChangeLog: PR middle-end/102403 * gcc.dg/uninit-pr102403.c: New test. * gcc.dg/uninit-pr102403-c2.c: New test.
Diffstat (limited to 'gcc/gimple-predicate-analysis.cc')
-rw-r--r--gcc/gimple-predicate-analysis.cc6
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/gimple-predicate-analysis.cc b/gcc/gimple-predicate-analysis.cc
index 3404f2d..f0c8444 100644
--- a/gcc/gimple-predicate-analysis.cc
+++ b/gcc/gimple-predicate-analysis.cc
@@ -2361,7 +2361,11 @@ predicate::init_from_control_deps (const vec<edge> *dep_chains,
dump (NULL, "");
}
- gcc_assert (has_valid_pred == (m_preds.length () > 0));
+ if (has_valid_pred)
+ gcc_assert (m_preds.length () != 0);
+ else
+ /* Clear M_PREDS to indicate failure. */
+ m_preds.release ();
}
/* Return the predicate expression guarding the definition of