Skip to content

[Test] Restrict test to release stdlibs. #70510

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

Merged
merged 1 commit into from
Dec 16, 2023

Conversation

nate-chandler
Copy link
Contributor

@nate-chandler nate-chandler commented Dec 16, 2023

Run OSLogMandatoryOptTest.swift only in configurations with release stdlibs.

#64789 introduced a simple but widespread change to SIL. It required updating a number of tests. The updates primarily involved replacing begin_borrow + copy_value with move_value instructions.

In particular, OSLogMandatoryOptTest.swift had to be updated as well: several new move_value instructions had to be FileCheck'd. These instructions all came from inlining code from the OSLogTestHelper target, a target which is built in the same configuration as the stdlib. In fact, they all came from inlining the _osLogTestHelper(_:assertion:) function.

When building OSLogTestHelper for release, no optimization passes are run on the function because it is marked @_optimize(none). SemanticARCOpts would have deleted these move_values, but it doesn't run on the function.

When building OSLogTestHelper for debug, however, MandatoryARCOpts (a subset of SemanticARCOpts) does run despite the function being marked @_optimize(none). That's because it's part of the OnonePassPipeline which is mandatory, meaning that every pass runs on each function, regardless of it being annotated @_optimize(none).

As a result the move_value instructions--which FileCheck lines were added to match--are deleted before FileCheck runs. So the new check lines fail to match the deleted instructions. Besides the absence of these new move_value instructions, there is no difference between the function in debug vs release. In particular, removing the newly added check lines allows the test to pass in a configuration with a debug stdlib.

Rather than duplicate the test for debug configurations, just disable it in them.

rdar://119744393

Run OSLogMandatoryOptTest.swift only in configurations with release
stdlibs.

swiftlang#64789 introduced a simple but
widespread change to SIL.  It required updating a number of tests.  The
updates primarily involved replacing `begin_borrow` + `copy_value` with
`move_value` instructions.

In particular, OSLogMandatoryOptTest.swift had to be updated as well:
several new `move_value` instructions had to be FileCheck'd.  These
instructions all came from inlining code from the OSLogTestHelper
target, a target which is built in the same configuration as the stdlib.
In fact, they all came from inlining the
`_osLogTestHelper(_:assertion:)` function.

When building OSLogTestHelper for release, no optimization passes are
run on the function because it is marked `@_optimize(none)`.
`SemanticARCOpts` would have deleted these `move_value`s, but it doesn't
run on the function.

When building OSLogTestHelper for debug, however, `MandatoryARCOpts` (a
subset of `SemanticARCOpts`) _does_ run despite the function being
marked `@_optimize(none)`.  That's because it's part of the
`OnonePassPipeline` which is mandatory, meaning that every pass runs on
each function, regardless of it being annotated `@_optimize(none)`.

As a result the `move_value` instructions--which FileCheck lines were
added to match--are deleted before FileCheck runs.  So the new check
lines fail to match the deleted instructions.  Besides the absence of
these new `move_value` instructions, there is no difference between the
function in debug vs release.  In particular, removing the newly added
check lines allows the test to pass in a configuration with a debug
stdlib.

Rather than duplicate the test for debug configurations, just disable it
in them.

rdar://119744393
@nate-chandler
Copy link
Contributor Author

@swift-ci please smoke test

@nate-chandler nate-chandler merged commit e9fcb12 into swiftlang:main Dec 16, 2023
@nate-chandler nate-chandler deleted the rdar119744393 branch December 16, 2023 15:48
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.

1 participant