Skip to content

Change assert in NewPutArg(), so it is consistent with transformation done by fgMorphArgs() - #62379

Merged
echesakov merged 3 commits into
dotnet:mainfrom
echesakov:Runtime_62249
Dec 4, 2021
Merged

Change assert in NewPutArg(), so it is consistent with transformation done by fgMorphArgs()#62379
echesakov merged 3 commits into
dotnet:mainfrom
echesakov:Runtime_62249

Conversation

@echesakov

Copy link
Copy Markdown
Contributor

On Arm32 lower asserts in NewPutArg() after morph does transformation from OBJ(struct<CanBeReinterpretedAsDouble, 8>, byRef) to IND(double, byRef) for stack arguments passed by value.

As far as I can tell, the transformation is legal, but the way lower validates the type and size of an argument is incorrect - it calls varTypeIsSIMD() which always returns false on Arm32.

The change makes the assert look similar to the one in morph https://github.com/dotnet/runtime/blob/main/src/coreclr/jit/morph.cpp#L3676

Fixes#62249

@dotnet/jit-contrib

…returns false.
Change the assert, so it checks that the argument type is TYP_DOUBLE in Lowering::NewPutArg() in src/coreclr/jit/lower.cpp
@ghostghost added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Dec 4, 2021
@ghost

ghost commented Dec 4, 2021

Copy link
Copy Markdown

Tagging subscribers to this area: @JulieLeeMSFT
See info in area-owners.md if you want to be subscribed.

Issue Details

On Arm32 lower asserts in NewPutArg() after morph does transformation from OBJ(struct<CanBeReinterpretedAsDouble, 8>, byRef) to IND(double, byRef) for stack arguments passed by value.

As far as I can tell, the transformation is legal, but the way lower validates the type and size of an argument is incorrect - it calls varTypeIsSIMD() which always returns false on Arm32.

The change makes the assert look similar to the one in morph https://github.com/dotnet/runtime/blob/main/src/coreclr/jit/morph.cpp#L3676

Fixes #62249

@dotnet/jit-contrib

Author:echesakovMSFT
Assignees:-
Labels:

area-CodeGen-coreclr

Milestone:-

@JulieLeeMSFTJulieLeeMSFT added this to the 7.0.0 milestone Dec 4, 2021
@echesakov
echesakov merged commit 14e8df1 into dotnet:mainDec 4, 2021
@echesakov
echesakov deleted the Runtime_62249 branch December 4, 2021 23:11
@ghostghost locked as resolved and limited conversation to collaborators Jan 4, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

arch-arm32area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Assertion failed 'varTypeIsSIMD(arg) || (info->GetStackSlotsNumber() == 1)' during 'Lowering nodeinfo' (IL size 105)

3 participants

@echesakov@EgorBo@JulieLeeMSFT