Skip to content
This repository was archived by the owner on Jan 23, 2023. It is now read-only.

Conversation

debayang
Copy link

Use the actual type of the lclVar to for load generated in CodeGen::genUnspillRegIfNeeded() .

This fixes the test failures seen on ARM64 platforms with JitStressRegs=0x2 / 0x200
Ref: https://github.com/dotnet/coreclr/issues/15389, https://github.com/dotnet/coreclr/issues/16359

Fixes the runtime issues (#16359,#15389) seen with COMPlus_JitStressRegs=0x2* on ARM64.
@debayang debayang force-pushed the clr_jitstress_arm64 branch from 442625d to 399df33 Compare March 27, 2018 06:59
@sdmaclea
Copy link

The tizen jobs were disabled. The failures can be ignored.

@CarolEidt @dotnet/arm64-contrib @dotnet/jit-contrib PTAL

Copy link

@CarolEidt CarolEidt left a comment

Choose a reason for hiding this comment

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

Looks good, but would like to see a comment explaining the case.

emitAttr attr = emitTypeSize(targetType);
emitter* emit = getEmitter();
var_types targetType = unspillTree->gtType;
if (targetType != genActualType(varDsc->lvType) && !varTypeIsGC(targetType) && !varDsc->lvNormalizeOnLoad())

Choose a reason for hiding this comment

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

Could you add a comment to describe the case where the type of the tree and genActualType(varDsc->lvType) don't match?

Copy link

@sdmaclea sdmaclea Mar 27, 2018

Choose a reason for hiding this comment

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

@CarolEidt The comment would be a duplicate of the XARCH comment above. Do you just want the XARCH comment moved out of the ifdef? Or do you want it duplicated here?

Choose a reason for hiding this comment

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

Ah, I missed that. Actually, looking at the code above, I see the // TODO-Cleanup: The following code could probably be further merged and cleaned up. which, along with the xarch comment, probably covers it adequately. Thanks

emitAttr attr = emitTypeSize(targetType);
emitter* emit = getEmitter();
var_types targetType = unspillTree->gtType;
if (targetType != genActualType(varDsc->lvType) && !varTypeIsGC(targetType) && !varDsc->lvNormalizeOnLoad())

Choose a reason for hiding this comment

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

Ah, I missed that. Actually, looking at the code above, I see the // TODO-Cleanup: The following code could probably be further merged and cleaned up. which, along with the xarch comment, probably covers it adequately. Thanks

@CarolEidt CarolEidt merged commit f56f7a5 into dotnet:master Mar 27, 2018
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants