Repository navigation
test(const-param): an empty parameter may take an IR argument, as on Linux arm64 - #238
Closed
SizzleUnrlsd wants to merge 1 commit into
Closed
SizzleUnrlsd wants to merge 1 commit into
SizzleUnrlsd wants to merge 1 commit into
Conversation
Contributor
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #237
Problem
testParameterDebugBindinglists every IR argument of the base-object constructors ofTaggedandTagFirst(test/unit/parameter_binding_input.cpp), which take an empty structTagby value. The list assumes that the empty parameter takes no IR argument. That holds on x86-64 and Apple arm64, the platforms CI runs on, but not under AAPCS64 on Linux, which passes the empty class as ani8argument (tag.coerce). Both checks fail there onmain(f846712), although the binding is right:tagis bound to its own declaration, with its type and its source index.Change
Test only:
test/unit/analyzer_module_unit_tests.cppand the comment oftest/unit/parameter_binding_input.cpp(31 lines added, 5 removed)."?name: binding"stands for the parameter of an argument that only some ABIs pass: the argument is absent, or it is at that place with that binding, and its IR name is the parameter's or derived from it (tag.coerce).TaggedandTagFirstlisttagthat way, and the comments say which ABIs pass the argument: none on x86-64 or Apple arm64, ani8under AAPCS64 on Linux.Tests
The two checks keep checking the type and the source index of every parameter. Mutants, each applied to the expectations and then restored:
x's source index changed in both expectations (required entries)TaggedandTagFirstfailTaggedandTagFirstfailtag's source index changed inTagged, its type inTagFirst(optional entries)tagargument thereTaggedandTagFirstfailValidation
At
d711321, onmainatf846712:tag.coercematched by the optional entries.tagtakes no argument there.CI and code scanning
d711321(merge ref2136821, intomainatf846712): every check passes, the macOS 14 build and the Linux binaries (amd64, arm64) included.mainatf846712. New alerts: none. The 66 alerts open onrefs/pull/238/mergeare the 66 open onmain, alert for alert.