Skip to content

Fix calculation of mask for constant values - #7507

Merged
emesare merged 1 commit into
Vector35:devfrom
james-a-johnson:const-mask
Nov 17, 2025
Merged

Fix calculation of mask for constant values#7507
emesare merged 1 commit into
Vector35:devfrom
james-a-johnson:const-mask

Conversation

@james-a-johnson

@james-a-johnson james-a-johnson commented Oct 21, 2025

Copy link
Copy Markdown
Contributor

This fixes an error when a constant is being loaded into a flag. The constants associated with a flag value have their size set to zero. That causes the mask for the constant value to be all zeros. Due to that, getting the value of a zero sized constant will always return 0 even if it should be 1.

This commit special cases the size of zero to create a mask of 1 which will correctly mask off the lowest bit and return that as the constant.

This fixes an error when a constant is being loaded into a flag.
The constants associated with a flag value have their size set to zero.
That causes the mask for the constant value to be all zeros. Due to that,
getting the value of a zero sized constant will always return 0 even if
it should be 1.

This commit special cases the size of zero to create a mask of 1 which
will correctly mask off the lowest byte and return that as the constant.
@plafosse
plafosse requested a review from Copilot October 28, 2025 12:49

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR fixes a bug in the mask calculation for constant values with zero size, which prevented correct retrieval of flag constant values. The fix special-cases size zero to return a mask of 1, ensuring the lowest byte is correctly extracted.

Key Changes

  • Modified mask calculation logic to handle zero-sized constants by returning a mask value of 1
  • Refactored the mask calculation from mutable variable assignment to an immutable conditional expression

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

mask = !mask;
}
let mask: u64 = if self.op.size == 0 {
1

Copilot AI Oct 28, 2025

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A mask of 1 will only preserve the least significant bit, not the lowest byte. To correctly mask the lowest byte as described in the PR description, the mask should be 0xFF (255) instead of 1.

Suggested change
1
0xFF

Copilot uses AI. Check for mistakes.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice catch. That is a bug in the wording of my MR message though and not the actual code.

@emesare

emesare commented Nov 17, 2025

Copy link
Copy Markdown
Member

LGTM

@emesare
emesare merged commit 89e76e2 into Vector35:dev Nov 17, 2025
5 of 6 checks passed
@james-a-johnson
james-a-johnson deleted the const-mask branch November 18, 2025 00:18
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.

3 participants