-
Notifications
You must be signed in to change notification settings - Fork 153
Unexpected type in load/store primitive #847
Comments
I'll take a look. |
Fyi, the actual test cases are under Arrays\lcs, eg Arrays\lcs_dbglcsmixed, etc. In this case, we see the following stub IL:
so we're indexing somewhere into this MD array and claiming the resulting address points at an object. LLILC is hoping that the address will have the right reference type here.
but given the raw pointer math we've dropped down to byte addressing. This triggers an assert in Note we don't see the assert in the parallel store case because when we store a reference we go via a helper to handle the write barrier, and nothing bothers to match up the pointer referent type with the type being stored. The fix is likely to relax the logic somewhere along the line. |
Closes dotnet#847. When getting a value from a multidimensional array of reference types, the runtime creates an array get stub that does a bunch of raw pointer math feeding a `ldind.ref`. Ensure that we have reasonable typing for this case.
We hit this NYI in the following CoreCLR tests (all of the failures are when jitting IL_STUB_Array_Get):
JIT\Methodical\Arrays\lcs_dbglcsmixed
JIT\Methodical\Arrays\lcs_dbglcsvalbox
JIT\Methodical\Arrays\lcs_rellcsmixed
JIT\Methodical\Arrays\lcs_rellcsvalbox
JIT\Methodical\Arrays\lcs_speed_dbglcsmixed
JIT\Methodical\Arrays\lcs_speed_dbglcsvalbox
JIT\Methodical\Arrays\lcs_speed_rellcsmixed
JIT\Methodical\Arrays\lcs_speed_rellcsvalbox
The text was updated successfully, but these errors were encountered: