Fix issue 16555 - Generate correct code for pushing scalar parameters. #6171
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.
This is my try at fixing this issue, bear with me as it's my first time playing around with the dmd internals.
The snippet below shows a major codegen problem, the first 8 parameters are correctly passed into
XMM0-XMM7but for the last one apush raxis generated, which is clearly wrong.The patch corrects this issue by exiting the huge switch and using the code that's already there to correctly push fp values and vectors (the vector path is untested, I just assumed we'd hit the same problem).
There's a further change that attempts to use the XMM registers whenever possible to avoid the using the
x87instructions, it does work fine in this case but I'm not 100% sure about this.Cheers