Merge pull request #7171 from ethereum/smt_fix_compound_bitwise

[SMTChecker] Fix ICE compound bitwise op inside branch
This commit is contained in:
Leonardo
2019-08-05 12:15:01 +02:00
committed by GitHub
7 changed files with 78 additions and 0 deletions
@@ -0,0 +1,13 @@
pragma experimental SMTChecker;
contract C {
function f(bool b) public pure {
uint v = 1;
if (b)
v &= 1;
assert(v == 1);
}
}
// ----
// Warning: (106-112): Assertion checker does not yet implement this assignment operator.
// Warning: (116-130): Assertion violation happens here
@@ -0,0 +1,13 @@
pragma experimental SMTChecker;
contract C {
function f(bool b) public pure {
uint v = 0;
if (b)
v |= 1;
assert(v == 1);
}
}
// ----
// Warning: (106-112): Assertion checker does not yet implement this assignment operator.
// Warning: (116-130): Assertion violation happens here
@@ -0,0 +1,13 @@
pragma experimental SMTChecker;
contract C {
function f(bool b) public pure {
uint v = 0;
if (b)
v ^= 1;
assert(v == 1);
}
}
// ----
// Warning: (106-112): Assertion checker does not yet implement this assignment operator.
// Warning: (116-130): Assertion violation happens here
@@ -0,0 +1,13 @@
pragma experimental SMTChecker;
contract C {
function f(bool b) public pure {
uint v = 1000000;
if (b)
v <<= 2;
assert(v > 0);
}
}
// ----
// Warning: (112-119): Assertion checker does not yet implement this assignment operator.
// Warning: (123-136): Assertion violation happens here
@@ -0,0 +1,13 @@
pragma experimental SMTChecker;
contract C {
function f(bool b) public pure {
uint v = 1;
if (b)
v >>= 2;
assert(v > 0);
}
}
// ----
// Warning: (106-113): Assertion checker does not yet implement this assignment operator.
// Warning: (117-130): Assertion violation happens here