miri: Add separate initializer for SOFT_ASSERTIONS #18137
Merged
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.
Motivation
This PR fixes a recognized bug.
Recently we began running Miri in CI, which allows us to catch some tricky bugs. Unfortunately Miri doesn't support global constructors (see rust-lang/miri#450) which we use when initializing the global
SOFT_ASSERTIONS
flag. This causes any test that uses soft assertions to fail.This PR adds a new Miri specific initializer for
SOFT_ASSERTIONS
which is alwaystrue
. A second approach we could take would be to useonce_cell::Lazy
instead ofctor
to initializeSOFT_ASSERTIONS
, but AFAIK that would introduce a small performance regression, as it would result inSOFT_ASSERTIONS
getting initialized on first use, as opposed to when the program is loaded.Checklist
$T ⇔ Proto$T
mapping (possibly in a backwards-incompatible way) and therefore is tagged with aT-proto
label.