JIT: Expand handling of non-value commas in gtSplitTree#83725
Merged
jakobbotsch merged 1 commit intodotnet:mainfrom Mar 21, 2023
Merged
JIT: Expand handling of non-value commas in gtSplitTree#83725jakobbotsch merged 1 commit intodotnet:mainfrom
jakobbotsch merged 1 commit intodotnet:mainfrom
Conversation
We can have a 'value'-typed COMMA whose RHS operand is actually an assignment. gtSplitTree would create illegal IR for this case. For example: N018 ( 38, 33) [000327] -ACXGO----- arg1 setup ├──▌ COMMA simd32 N011 ( 28, 25) [000328] -ACXGO----- │ ├──▌ COMMA void N008 ( 24, 22) [000320] -ACXG---R-- │ │ ├──▌ ASG byref N007 ( 3, 2) [000319] D------N--- │ │ │ ├──▌ LCL_VAR byref V50 tmp45 N006 ( 20, 19) [000126] --CXG------ │ │ │ └──▌ CALL help byref CORINFO_HELP_UNBOX N004 ( 3, 2) [000124] ----------- arg1 in rsi │ │ │ ├──▌ LCL_VAR ref V02 loc1 N005 ( 3, 10) [000125] H---------- arg0 in rdi │ │ │ └──▌ CNS_INT(h) long 0x7f6e4bb0e500 class N010 ( 4, 3) [000322] ---X-O----- │ │ └──▌ NULLCHECK byte N009 ( 3, 2) [000321] ----------- │ │ └──▌ LCL_VAR byref V50 tmp45 N017 ( 10, 8) [000331] -A-XGO--R-- │ └──▌ ASG simd32 (copy) N016 ( 3, 2) [000330] D------N--- │ ├──▌ LCL_VAR simd32 V51 tmp46 N015 ( 6, 5) [000329] ---XGO-N--- │ └──▌ IND simd32 N014 ( 4, 3) [000326] -----O-N--- │ └──▌ ADD byref N012 ( 3, 2) [000324] -----O----- │ ├──▌ LCL_VAR byref V50 tmp45 N013 ( 1, 1) [000325] ----------- │ └──▌ CNS_INT long 32 gtSplitTree would believe that [000327] was a value and would create the following IR shape: N016 ( 14, 11) [000428] -A-XGO--R-- ▌ ASG simd32 (copy) N015 ( 3, 2) [000427] D------N--- ├──▌ LCL_VAR simd32 V76 tmp71 N014 ( 10, 8) [000331] -A-XGO-NR-- └──▌ ASG simd32 (copy) N013 ( 3, 2) [000330] D------N--- ├──▌ LCL_VAR simd32 V51 tmp46 N012 ( 6, 5) [000329] ---XGO-N--- └──▌ IND simd32 N011 ( 4, 3) [000326] -----O-N--- └──▌ ADD byref N009 ( 3, 2) [000324] -----O----- ├──▌ LCL_VAR byref V50 tmp45 N010 ( 1, 1) [000325] ----------- └──▌ CNS_INT long 32 Fix dotnet#83576
|
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch, @kunalspathak Issue DetailsWe can have a 'value'-typed COMMA whose RHS operand is actually an assignment. gtSplitTree would create illegal IR for this case. For example: N018 ( 38, 33) [000327] -ACXGO----- arg1 setup ├──▌ COMMA simd32
N011 ( 28, 25) [000328] -ACXGO----- │ ├──▌ COMMA void
N008 ( 24, 22) [000320] -ACXG---R-- │ │ ├──▌ ASG byref
N007 ( 3, 2) [000319] D------N--- │ │ │ ├──▌ LCL_VAR byref V50 tmp45
N006 ( 20, 19) [000126] --CXG------ │ │ │ └──▌ CALL help byref CORINFO_HELP_UNBOX
N004 ( 3, 2) [000124] ----------- arg1 in rsi │ │ │ ├──▌ LCL_VAR ref V02 loc1
N005 ( 3, 10) [000125] H---------- arg0 in rdi │ │ │ └──▌ CNS_INT(h) long 0x7f6e4bb0e500 class
N010 ( 4, 3) [000322] ---X-O----- │ │ └──▌ NULLCHECK byte
N009 ( 3, 2) [000321] ----------- │ │ └──▌ LCL_VAR byref V50 tmp45
N017 ( 10, 8) [000331] -A-XGO--R-- │ └──▌ ASG simd32 (copy)
N016 ( 3, 2) [000330] D------N--- │ ├──▌ LCL_VAR simd32 V51 tmp46
N015 ( 6, 5) [000329] ---XGO-N--- │ └──▌ IND simd32
N014 ( 4, 3) [000326] -----O-N--- │ └──▌ ADD byref
N012 ( 3, 2) [000324] -----O----- │ ├──▌ LCL_VAR byref V50 tmp45
N013 ( 1, 1) [000325] ----------- │ └──▌ CNS_INT long 32gtSplitTree would believe that [000327] was a value and would create the following IR shape: N016 ( 14, 11) [000428] -A-XGO--R-- ▌ ASG simd32 (copy)
N015 ( 3, 2) [000427] D------N--- ├──▌ LCL_VAR simd32 V76 tmp71
N014 ( 10, 8) [000331] -A-XGO-NR-- └──▌ ASG simd32 (copy)
N013 ( 3, 2) [000330] D------N--- ├──▌ LCL_VAR simd32 V51 tmp46
N012 ( 6, 5) [000329] ---XGO-N--- └──▌ IND simd32
N011 ( 4, 3) [000326] -----O-N--- └──▌ ADD byref
N009 ( 3, 2) [000324] -----O----- ├──▌ LCL_VAR byref V50 tmp45
N010 ( 1, 1) [000325] ----------- └──▌ CNS_INT long 32Fix #83576
|
Member
|
@jakobbotsch does the assert come from gtSplitTree stress pass or runtime lookup expansion? |
EgorBo
approved these changes
Mar 21, 2023
Member
Author
|
@EgorBo From the stress mode. |
Member
Author
|
/azp run runtime-coreclr jitstress |
|
Azure Pipelines successfully started running 1 pipeline(s). |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
We can have a 'value'-typed COMMA whose RHS operand is actually an assignment. gtSplitTree would create illegal IR for this case.
For example:
gtSplitTree would believe that [000327] was a value and would create the following IR shape:
Fix #83576