mirror of
https://github.com/Z3Prover/z3
synced 2025-04-22 16:45:31 +00:00
avoid unintialized value build warnings
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
a557913307
commit
af51d98a32
3 changed files with 33 additions and 26 deletions
|
@ -120,10 +120,10 @@ void intervals::add_linear_to_vector(const nex* e, vector<std::pair<rational, lp
|
|||
// e = a * can_t + b
|
||||
lp::lar_term intervals::expression_to_normalized_term(const nex_sum* e, rational& a, rational& b) {
|
||||
TRACE("nla_horner_details", tout << *e << "\n";);
|
||||
lpvar smallest_j;
|
||||
lpvar smallest_j = 0;
|
||||
vector<std::pair<rational, lpvar>> v;
|
||||
b = rational(0);
|
||||
unsigned a_index;
|
||||
unsigned a_index = UINT_MAX;
|
||||
for (const nex* c : *e) {
|
||||
if (c->is_scalar()) {
|
||||
b += c->to_scalar().value();
|
||||
|
|
|
@ -581,6 +581,9 @@ namespace algebraic_numbers {
|
|||
bool b_lt_a = lt(b, a);
|
||||
bool c_lt_b = lt(c, b);
|
||||
bool c_lt_a = lt(c, a);
|
||||
(void)b_lt_a;
|
||||
(void)c_lt_b;
|
||||
(void)c_lt_a;
|
||||
// (a <= b & b <= c) => a <= c
|
||||
// b < a or c < b or !(c < a)
|
||||
CTRACE("algebraic_bug",
|
||||
|
|
|
@ -55,22 +55,19 @@ namespace smt {
|
|||
|
||||
rational val1;
|
||||
expr_ref len(m), len_val(m);
|
||||
expr* e1, *e2;
|
||||
expr* e1 = nullptr, *e2 = nullptr;
|
||||
expr_ref_vector todo(m);
|
||||
todo.push_back(e);
|
||||
val.reset();
|
||||
while (!todo.empty()) {
|
||||
expr* c = todo.back();
|
||||
todo.pop_back();
|
||||
if (u.str.is_concat(to_app(c))) {
|
||||
e1 = to_app(c)->get_arg(0);
|
||||
e2 = to_app(c)->get_arg(1);
|
||||
zstring tmp;
|
||||
if (u.str.is_concat(c, e1, e2)) {
|
||||
todo.push_back(e1);
|
||||
todo.push_back(e2);
|
||||
}
|
||||
else if (u.str.is_string(to_app(c))) {
|
||||
zstring tmp;
|
||||
u.str.is_string(to_app(c), tmp);
|
||||
else if (u.str.is_string(c, tmp)) {
|
||||
unsigned int sl = tmp.length();
|
||||
val += rational(sl);
|
||||
}
|
||||
|
@ -96,9 +93,9 @@ namespace smt {
|
|||
ast_manager & sub_m = subsolver.m();
|
||||
context & sub_ctx = subsolver.get_context();
|
||||
|
||||
expr * full;
|
||||
expr * suff;
|
||||
u.str.is_suffix(f, suff, full);
|
||||
expr * full = nullptr;
|
||||
expr * suff = nullptr;
|
||||
VERIFY(u.str.is_suffix(f, suff, full));
|
||||
|
||||
expr_ref haystack(full, m);
|
||||
expr_ref needle(suff, m);
|
||||
|
@ -159,9 +156,9 @@ namespace smt {
|
|||
ast_manager & sub_m = subsolver.m();
|
||||
context & sub_ctx = subsolver.get_context();
|
||||
|
||||
expr * full;
|
||||
expr * suff;
|
||||
u.str.is_suffix(f, suff, full);
|
||||
expr * full = nullptr;
|
||||
expr * suff = nullptr;
|
||||
VERIFY(u.str.is_suffix(f, suff, full));
|
||||
|
||||
expr_ref haystack(full, m);
|
||||
expr_ref needle(suff, m);
|
||||
|
@ -214,9 +211,9 @@ namespace smt {
|
|||
ast_manager & sub_m = subsolver.m();
|
||||
context & sub_ctx = subsolver.get_context();
|
||||
|
||||
expr * full;
|
||||
expr * pref;
|
||||
u.str.is_prefix(f, pref, full);
|
||||
expr * full = nullptr;
|
||||
expr * pref = nullptr;
|
||||
VERIFY(u.str.is_prefix(f, pref, full));
|
||||
|
||||
expr_ref haystack(full, m);
|
||||
expr_ref needle(pref, m);
|
||||
|
@ -331,9 +328,9 @@ namespace smt {
|
|||
ast_manager & sub_m = subsolver.m();
|
||||
context & sub_ctx = subsolver.get_context();
|
||||
|
||||
expr * full;
|
||||
expr * small;
|
||||
u.str.is_contains(f, full, small);
|
||||
expr * full = nullptr;
|
||||
expr * small = nullptr;
|
||||
VERIFY(u.str.is_contains(f, full, small));
|
||||
|
||||
expr_ref haystack(full, m);
|
||||
expr_ref needle(small, m);
|
||||
|
@ -471,9 +468,8 @@ namespace smt {
|
|||
ast_manager & sub_m = subsolver.m();
|
||||
context & sub_ctx = subsolver.get_context();
|
||||
|
||||
expr * str;
|
||||
expr * re;
|
||||
u.str.is_in_re(f, str, re);
|
||||
expr * str = nullptr, *re = nullptr;
|
||||
VERIFY(u.str.is_in_re(f, str, re));
|
||||
|
||||
// TODO reuse some of the automaton framework from theory_str_regex
|
||||
eautomaton * aut = m_mk_aut(re);
|
||||
|
@ -1630,6 +1626,7 @@ namespace smt {
|
|||
if (indicatorHasEqcValue) {
|
||||
zstring len_pIndiStr;
|
||||
u.str.is_string(len_indicator_value, len_pIndiStr);
|
||||
// NSB: is len_indicator_value always a string? Then use VERIFY, or otherwise test return value
|
||||
if (len_pIndiStr != "more") {
|
||||
effectiveLenInd = len_indicator_pre;
|
||||
effectiveLenIndiStr = len_pIndiStr;
|
||||
|
@ -1658,6 +1655,7 @@ namespace smt {
|
|||
} else {
|
||||
if (effectiveHasEqcValue) {
|
||||
u.str.is_string(effective_eqc_value, effectiveLenIndiStr);
|
||||
// NSB: is argument always a string? Then use VERIFY, or otherwise test return value
|
||||
} else {
|
||||
NOT_IMPLEMENTED_YET();
|
||||
}
|
||||
|
@ -1955,6 +1953,7 @@ namespace smt {
|
|||
// safety check
|
||||
zstring effectiveLenIndiStr;
|
||||
u.str.is_string(len_indicator_value, effectiveLenIndiStr);
|
||||
// NSB: is argument always a string? Then use VERIFY, or otherwise test return value
|
||||
if (effectiveLenIndiStr == "more" || effectiveLenIndiStr == "less") {
|
||||
TRACE("str", tout << "ERROR: illegal state -- requesting 'more value tests' but a length tester is not yet concrete!" << std::endl;);
|
||||
UNREACHABLE();
|
||||
|
@ -1982,6 +1981,7 @@ namespace smt {
|
|||
if (indicatorHasEqcValue) {
|
||||
zstring len_pIndiStr;
|
||||
u.str.is_string(len_indicator_value, len_pIndiStr);
|
||||
// NSB: is argument always a string? Then use VERIFY, or otherwise test return value
|
||||
if (len_pIndiStr != "more") {
|
||||
effectiveLenInd = len_indicator_pre;
|
||||
effectiveLenIndiStr = len_pIndiStr;
|
||||
|
@ -2086,6 +2086,7 @@ namespace smt {
|
|||
}
|
||||
} else {
|
||||
u.str.is_string(lastTesterValue, lastTesterConstant);
|
||||
// NSB: is argument always a string? Then use VERIFY, or otherwise test return value
|
||||
}
|
||||
TRACE("str", tout << "last length tester is assigned \"" << lastTesterConstant << "\"" << "\n";);
|
||||
if (lastTesterConstant == "more" || lastTesterConstant == "less") {
|
||||
|
@ -2249,6 +2250,7 @@ namespace smt {
|
|||
expr * coreVal = to_app(str2RegFunc)->get_arg(0);
|
||||
zstring coreStr;
|
||||
u.str.is_string(coreVal, coreStr);
|
||||
// NSB: is argument always a string? Then use VERIFY, or otherwise test return value
|
||||
if (oneUnroll == nullptr) {
|
||||
oneUnroll = *itor;
|
||||
oneCoreStr = coreStr;
|
||||
|
@ -2266,6 +2268,7 @@ namespace smt {
|
|||
expr * coreVal = to_app(str2RegFunc)->get_arg(0);
|
||||
zstring coreStr;
|
||||
u.str.is_string(coreVal, coreStr);
|
||||
// NSB: is argument always a string? Then use VERIFY, or otherwise test return value
|
||||
unsigned int core1Len = coreStr.length();
|
||||
zstring uStr = get_unrolled_string(coreStr, (lcm / core1Len));
|
||||
if (uStr != lcmStr) {
|
||||
|
@ -2353,6 +2356,7 @@ namespace smt {
|
|||
} else {
|
||||
zstring testerStr;
|
||||
u.str.is_string(testerVal, testerStr);
|
||||
// NSB: is argument always a string? Then use VERIFY, or otherwise test return value
|
||||
TRACE("str", tout << "Tester [" << mk_pp(tester, mgr) << "] = " << testerStr << "\n";);
|
||||
if (testerStr == "more") {
|
||||
litems.push_back(ctx.mk_eq_atom(tester, moreAst));
|
||||
|
@ -2556,8 +2560,8 @@ namespace smt {
|
|||
zstring str_lo, str_hi;
|
||||
SASSERT(u.str.is_string(lo));
|
||||
SASSERT(u.str.is_string(hi));
|
||||
u.str.is_string(lo, str_lo);
|
||||
u.str.is_string(hi, str_hi);
|
||||
VERIFY(u.str.is_string(lo, str_lo));
|
||||
VERIFY(u.str.is_string(hi, str_hi));
|
||||
SASSERT(str_lo.length() == 1);
|
||||
SASSERT(str_hi.length() == 1);
|
||||
unsigned int c1 = str_lo[0];
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue