-
Notifications
You must be signed in to change notification settings - Fork 4.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
JIT: Expand handling of non-value commas in gtSplitTree #83725
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 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 #83576
|
@jakobbotsch does the assert come from gtSplitTree stress pass or runtime lookup expansion? |
@EgorBo From the stress mode. |
/azp run runtime-coreclr jitstress |
Azure Pipelines successfully started running 1 pipeline(s). |
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