Normalize NaN output in ildasm for cross-platform consistency#123042
Draft
Normalize NaN output in ildasm for cross-platform consistency#123042
Conversation
… consistency Co-authored-by: agocke <515774+agocke@users.noreply.github.com>
…dback Co-authored-by: agocke <515774+agocke@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] Fix ildasm output discrepancies between Windows and Linux
Normalize NaN output in ildasm for cross-platform consistency
Jan 9, 2026
3 tasks
Member
|
@copilot can we write a unit test for this? |
Co-authored-by: agocke <515774+agocke@users.noreply.github.com>
Contributor
Author
Added in commit 5aa61cc. The test
The test follows the same pattern as existing ilasm/ildasm roundtrip tests and will run on both Windows and Linux in CI. |
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.
Description
ildasm produces platform-dependent NaN comments: Windows outputs
// -nan(ind)while Linux outputs// -nan. This causes test failures when comparing IL output across platforms.Root cause:
sprintf_swith%#.17gformat produces different strings for NaN values on different platforms.Changes:
NormalizeFloatString()indis.cppto strip platform-specific suffixes like(ind)from NaN/INF representationssprintf_sformatting indasm.cppfor both float32 and float64 literal valuesFloatSpecialValuesTestsinsrc/tests/ilasm/FloatSpecialValues/to verify NaN output is normalized across platformsCustomer Impact
Without this fix, tools that compare ildasm output across platforms (e.g., test suites, build verification) see spurious differences in comments. The IL bytecode itself is identical—only comment formatting differs.
Regression
No. This is a long-standing platform difference in ildasm output formatting.
Testing
// -nanwithout platform-specific suffixesFloatSpecialValuesTests.NaNOutputIsNormalizedAcrossPlatforms) that:// -nanwithout platform-specific suffixes-nan(ind)or any-nan(patternRisk
Low. Changes are isolated to comment formatting in ildasm output. The actual IL bytecode and its semantic meaning are unchanged. Only affects the human-readable comments appended to hex representations of special floating-point values.
Original prompt
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.