Skip to content

Fix vararg list pointer overlaps (Closes #30) - #41

Open
aikoschurmann wants to merge 1 commit into
softwarelanguageslab:masterfrom
aikoschurmann:feature/vararg-precision
Open

aikoschurmann wants to merge 1 commit into
softwarelanguageslab:masterfrom
aikoschurmann:feature/vararg-precision

Conversation

@aikoschurmann

Copy link
Copy Markdown

Fixes #30.

Vararg lists were using the same pointer addresses as the normal arguments they were built from. This caused them to overlap in the store and leak precision.

To fix this, I added a new VarArgPtrAddr so vararg lists get their own separate address space. The allocateList and allocateCons functions now take an isVarArg flag to make sure varargs are kept completely distinct from regular arguments. I also added a test suite to verify the precision holds up across the different analysis engines.

(Also included a fix for a failing lattice test where unary operations like sqrt were losing their intrinsic addresses in the test assertions).

Note on Tests:
You might notice some failures in the CI pipeline for the concurrent/incremental suites (specifically Incremental ModF CP, Incremental ModConc, and Parallel (n=8)). I've verified locally that these are pre-existing flaky tests that also consistently fail on the unmodified master branch. The dedicated vararg tests pass across all engines

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Vararg list addresses may accidentally overlap with other addresses

1 participant