Conversation
| uint64_t max_idx = blk_size - bytes + idx; | ||
| expr off = blk_offset + expr::mkUInt(idx, offset); | ||
| loaded[i].first.add(::raw_load(blk.val, off, max_idx), cond); | ||
| expr is_alive = isBlockAlive(bid, local); |
There was a problem hiding this comment.
Should it be; expr is_alive = isBlockAlive(expr::mkUInt(bid, Pointer::bitsShortBid()), local);
| @@ -0,0 +1,13 @@ | |||
| ; EXPECT: ERROR: Source is more defined than target | |||
There was a problem hiding this comment.
the name of the test is not very good. this is testing that the load is not UB.
You need another test that shows that the return value can be replaced with poison. Also, run the tests; I believe some tests will fail with your change.
|
|
||
| auto block_constraints = [&](const Pointer &p) { | ||
| expr ret = p.isBlockAlive(); | ||
| expr ret = (iswrite || is_asm) ? p.isBlockAlive() : true; |
There was a problem hiding this comment.
the iswrite condition only applies to stack variables.
|
Hello, I made the changes, ran the tests, and got 82% failure rate... so be back in a bit. |
|
@nunoplopes Hi, I got the tests working and did find that a decent amount did fail. But it took me a while to figure out that Im supposed to run On the note of tests, here are the changes: FIXED (1):
NEW FAILURES (5):
|
probably 😅 |
Hello, Someone I know sent me this and said I should try patching it, took a quick jab at it and came up with this. Let me know if I missed anything, or am not properly following the coding standards.
Thank you,
Yohello1