Skip to content

Conversation

alsepkow
Copy link
Contributor

Fix C4146 warnings: unary minus on unsigned types

Fixes several remaining MSVC C4146 warnings where unary minus was applied to unsigned integers.
This should be the last PR containing MSVC C4146 warning fixes. I will remove the disablement of the warning as an error in a subsequent PR once the other pending PRs are completed.

Changes:

  • Replace -(unsigned_value) with ~unsigned_value + 1 for offset calculations
  • Use -1LL instead of -1ULL where signed values are intended
  • Fix alignment padding calculation to avoid unsigned negation

Files changed:

  • CoverageMappingGen.cpp, Lexer.cpp, Rewriter.cpp: Use two's complement for safe unsigned negation in offset calculations
  • ItaniumCXXABI.cpp: Use signed literal for ABI-compliant null member pointer (-1)
  • ExprConstant.cpp: Replace -1ULL with ~0ULL for bitmasks
  • CodeGenMapTable.cpp: Fix sentinel value generation

All changes are mathematically equivalent and preserve existing behavior while eliminating compiler warnings.

Addresses #7573

@alsepkow alsepkow merged commit 23118b9 into microsoft:main Jun 25, 2025
13 checks passed
@github-project-automation github-project-automation bot moved this from New to Done in HLSL Roadmap Jun 25, 2025
@alsepkow alsepkow deleted the user/alsepkow/EO_4146_3 branch June 25, 2025 02:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

3 participants