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.
Was this just for debugging purposes?
katrinafyi
left a comment
There was a problem hiding this comment.
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.