-
Notifications
You must be signed in to change notification settings - Fork 3
Add read-uninitialised locals check #571
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
c664cda to
ef8ca6b
Compare
|
In test Not sure which change causes this, it doesnt look like the inlining fix or the change to liveness alone cause it. |
|
Seems fixed now, idk why I couldn't get the tail-recursive |
|
Is the read-uninitialised invariant check supposed to catch the sort of case we had with cntlm_noduk? If I revert the fix for the inter-procedural live variables analysis and run the cntlm-no-duk InvervalDSATest, the infinite loop in the copy prop is identified and an exception is thrown, but the read-uninitialised invariant doesn't seem to catch any of that? |
|
The read-uninitialised invariant does seem to fail for some of the cases in MemoryTransformTests, although it isn't causing the tests to fail |
|
It detects it when placing the invariant check in the simplify pipeline before the copyprop pass, immediately after DSA, I'll commit a check there too. |
In runutils after the memory transform I run the check but don't assert it passes as it seems to not conform; I expect the transform would also need to update parameter lists in some cases but I'm not sure the exact reasons it fails. |
src/test/scala/IntervalDSATest.scala
Outdated
| val locals = res.dsa.get.local | ||
| assert(locals.values.forall(_.glIntervals.size == 1)) | ||
|
|
||
| println(locals.values.filterNot(IntervalDSA.checksStackMaintained).map(_.proc.procName).toSet) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Was this just for debugging purposes?
katrinafyi
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
looks good and it has worked in tv.
is it worth a comment that read-uninit only checks in RPO order rather than dominance? because of this, it is possible for it to miss some uninitialised reads.
Uh oh!
There was an error while loading. Please reload this page.