runtime: [Windows/arm32] Test failure: 10w5d_cs_do.cmd
With JitStress=1
TEST_CMD_LINE: JIT\Methodical\fp\exgen\10w5d_cs_do> C:\Users\robox\j\workspace\arm_cross_che---9b14f1d9\bin\tests\Windows_NT.arm.Checked\JIT\Methodical\fp\exgen\10w5d_cs_do\10w5d_cs_do.cmd
BEGIN EXECUTION
"C:\Users\robox\j\workspace\arm_cross_che---9b14f1d9\bin\tests\Windows_NT.arm.Checked\Tests\Core_Root\corerun.exe" 10w5d_cs_do.exe
Func_0_6_5_6_3: != true
Func_0_6_5_4_6: <= true
Func_0_6_5_4_5: > true
Func_0_6_5_4_3: == false
Func_0_6_4_6_2: != true
Func_0_6_4_5_4: < true
Func_0_6_4_5_1: < true
Func_0_6_4_4: <= true
Func_0_6_3_6_5: == false
Func_0_6_3_4_4: <= true
Func_0_6_3_4_3: < true
Func_0_6_3_3: < true
Func_0_6_3_2_3: >= true
Func_0_6_3_1_5: < true
Func_0_6_3_1: <= false
Func_0_6_3: != true
Func_0_6_2_5: != true
Func_0_6_2_1: > false
Func_0_6_1_6_4: < false
Func_0_6_1_6_3: > false
Func_0_6_1_5_4: > true
Func_0_6_1_3: == false
Func_0_5_6_6_6: <= true
Func_0_5_6_6_1: > true
Func_0_5_6_4_6: <= false
Func_0_5_6_4_2: >= false
Func_0_5_6_3_6: < false
Func_0_5_6_3_1: == false
Func_0_5_6_3: <= true
Func_0_5_6_2_1: >= false
Func_0_5_6_1_3: > true
Func_0_5_6_1: <= false
Func_0_5_5_6: != true
Func_0_5_5_5_6: != true
Func_0_5_5_5_4: == false
Func_0_5_5_5_2: == false
Func_0_5_5_4_5: < true
Func_0_5_5_4: > true
Func_0_5_5_3_4: != true
Func_0_5_5_3_2: <= true
Func_0_5_5_3_1: > true
Func_0_5_5_1: < false
Func_0_5_4_5: >= false
Func_0_5_4_1_3: <= false
Func_0_5_4_1_2: == false
Func_0_5_4: != true
Func_0_5_3_6: != true
Func_0_5_3_5_3: < true
Func_0_5_3_4_2: == false
Func_0_5_3_4_1: >= true
Func_0_5_3_4: <= true
Func_0_5_3_1_2: < true
Func_0_5_3: >= false
Func_0_5_2_6_6: != true
Func_0_5_2_6_3: != true
Func_0_5_2_5_6: != true
Func_0_5_2_5_4: == false
Func_0_5_2_5_3: <= true
Func_0_5_2_5_2: != true
Func_0_5_2_4_5: > false
Func_0_5_2_4_2: <= true
Func_0_5_2_2_5: > true
Func_0_5_2_1_6: > false
Func_0_5_2_1_1: != true
Func_0_5_1: != true
Func_0_4_6_6_5: <= true
Func_0_4_6_6: == false
Func_0_4_6_5_6: <= true
Func_0_4_6_5_5: != true
Func_0_4_6_5_2: <= true
Func_0_4_6_5: == false
Func_0_4_6_3_6: >= true
Func_0_4_6_3_3: == false
Func_0_4_6_3_2: <= false
Func_0_4_6_2: == false
Func_0_4_5_6: >= false
Func_0_4_5_5: < true
Func_0_4_5_3_5: == false
Func_0_4_5_2_6: > false
Func_0_4_5_2_4: >= true
Func_0_4_5_2_1: <= false
Func_0_4_5_2: >= true
Func_0_4_5_1_5: == false
Func_0_4_5_1_2: > true
Func_0_4_4_5: != true
Func_0_4_4_2_6: < true
Func_0_4_4_2_5: != false
Func_0_4_4_2_3: <= true
Func_0_4_4_2: == false
Func_0_4_4_1_4: >= false
Func_0_4_3_6_6: <= true
Func_0_4_3_6_5: <= true
Func_0_4_3_6_2: >= true
Func_0_4_3_6_1: == true
Func_0_4_3_4: >= true
Func_0_4_3_2_2: == false
Func_0_4_3_1_3: > true
Func_0_4_3_1_1: != true
Func_0_4_2_5_4: <= true
Func_0_4_2_5_1: != true
Func_0_4_1_4: >= true
Func_0_4_1_3_1: >= true
Func_0_4_1_2_3: < false
Func_0_4_1_1_1: >= true
Func_0_3_6_6_5: >= true
Func_0_3_6_6_1: < true
Func_0_3_6_5_5: > false
Func_0_3_6_4_1: < false
Func_0_3_6_3_4: != true
Func_0_3_5_6_6: == true
Func_0_3_5_6_5: <= true
Func_0_3_5_6_2: != true
Func_0_3_5_4: == false
Func_0_3_5_3: > false
Func_0_3_5_2_6: != true
Func_0_3_5_2_5: <= true
Func_0_3_5_2_4: > false
Func_0_3_5_2_2: == false
Func_0_3_5_1_1: != true
Func_0_3_4_1_1: < true
Func_0_3_4_1: < true
Func_0_3_3_6_4: <= false
Func_0_3_3_6_1: <= true
Func_0_3_3_5_6: != true
Func_0_3_3_5_1: != true
Func_0_3_3_4_6: <= true
Func_0_3_3_4_5: <= true
Func_0_3_3_4_2: < true
Func_0_3_2_6_6: <= true
Func_0_3_2_6_3: >= false
Func_0_3_2_6_1: >= true
Func_0_3_2_5_6: < true
Func_0_3_2_5_3: >= true
Func_0_3_2_5_1: > true
Func_0_3_2_4_3: > true
Func_0_3_2_3_3: > true
Func_0_3_2_3_2: <= false
Func_0_3_2_1_5: != true
Func_0_3_1_6_6: > true
Func_0_3_1_6_4: >= false
Func_0_3_1_4_4: <= true
Func_0_3_1_4_3: == true
Func_0_3_1_4_2: == false
Func_0_3_1_4_1: <= true
Func_0_3_1_3_5: == false
Func_0_3_1_3_4: < true
Func_0_3_1_2_3: < true
Func_0_2_6_6_4: != false
Func_0_2_6_6_3: < true
Func_0_2_6_6_2: != true
Func_0_2_6_5_2: > true
Func_0_2_6_4_5: != true
Func_0_2_6_3_1: >= true
Func_0_2_6_1_3: <= true
Func_0_2_6_1_2: == false
Func_0_2_5_6_6: == false
Func_0_2_5_6_1: >= false
Func_0_2_5_5_2: <= false
Func_0_2_5_5_1: != true
Func_0_2_5_4_3: <= true
Func_0_2_5_4_1: > true
Func_0_2_3_6_5: != true
Func_0_2_3_6_4: <= true
Func_0_2_3_6_1: >= false
Func_0_2_3_4_5: < true
Func_0_2_3_4_3: < false
Func_0_2_3_3_4: == false
Func_0_2_3_3_1: < true
Func_0_2_3_2_4: < true
Func_0_2_3_1_6: <= true
Func_0_2_3_1_2: <= false
Func_0_2_3_1_1: >= true
Func_0_2_3_1: == true
Func_0_2_2_6: != true
Func_0_2_2_3_5: > false
Func_0_2_2_3_3: != true
Func_0_2_2_3_1: < true
Func_0_2_2_2: != true
Func_0_2_2_1_5: > true
Func_0_2_2_1_3: < true
Func_0_2_2_1_2: > true
Func_0_2_2_1: < true
Func_0_2_1_2_2: >= true
Func_0_1_6_6_5: == false
Func_0_1_6_2_4: < true
Func_0_1_6_2_2: <= true
Func_0_1_6_1_6: != true
Func_0_1_6_1_3: > false
Func_0_1_6_1_2: != true
Func_0_1_6: >= true
Func_0_1_5_5_1: != true
Func_0_1_5_4_6: == false
Func_0_1_5_4_5: == false
Func_0_1_5_4_4: < true
Func_0_1_5_4_1: == false
Func_0_1_5_3_3: == false
Func_0_1_4_2_3: > true
Func_0_1_1_6_5: > true
Func_0_1_1_6_3: >= false
Func_0_1_1_6_2: != true
Func_0_1_1_6_1: <= false
Func_0_1_1_5_2: != true
Func_0_1_1_2_6: < true
Func_0_1_1_2_4: > true
Func_0_1_1_2_3: == false
Func_0_1_1_2_1: < false
Func_0_1_1_1_5: >= true
Expected: 100
Actual: -532462766
END EXECUTION - FAILED
FAILED
TEXT_EXPECTED_RETURN_CODE = 0
TEXT_ACTUAL_RETURN_CODE = 1 (0x1)
About this issue
- Original URL
- State: closed
- Created 6 years ago
- Comments: 18 (18 by maintainers)
Commits related to this issue
- disable tests\src\JIT\Methodical\fp\exgen\10w5d_cs_do in stress modes. The issue is #18988 — committed to sandreenko/coreclr by deleted user 6 years ago
- disable tests\src\JIT\Methodical\fp\exgen\10w5d_cs_do in stress modes. The issue is #18988 — committed to sandreenko/coreclr by deleted user 6 years ago
- disable tests\src\JIT\Methodical\fp\exgen\10w5d_cs_do (#19465) in stress modes. The issue is #18988 — committed to dotnet/coreclr by deleted user 6 years ago
The obvious problem is that the struct ended up being independent promoted. It should have been dependent promoted. Or better, only the
loandmidfields should be dependent and not enregistered. But I don’t think the JIT currently supports this kind of mixed dependent/independent promotion.Though this begs the question what this optimization is trying to achieve. If the struct is in already forced in memory for other reasons then this should be a good optimization. But for structs that are local variables and promotion candidates this optimization can hurt and even the best optimizer may not produce the desired results because there aren’t many options:
I wonder if it wouldn’t be slightly easier for the JIT to go the other way around - in the shift case figure out that both field are already in memory and change the shift to a int64 load.