[x64][SysV] Pass NO_CLASS eightbytes #104098
Labels
area-CodeGen-coreclr
CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI
Milestone
Off-shoot from #103799. Currently NO_CLASS eightbytes are reclassified as INTEGER:
runtime/src/coreclr/vm/methodtable.cpp
Lines 2683 to 2700 in 131a3c5
System V ABI does not allow such reclassification, NO_CLASS eightbytes are valid for passing to a function. The difference is an INTEGER eightbyte gets assigned an integer argument register for passing; a NO_CLASS eightbyte doesn't get any register assigned. So the reclassification causes a mismatch for subsequent integer arguments.
Note: there's a silent requirement that .NET structs with explicit layouts or manually defined sizes have 'significant' padding. Care should be taken to preserve such padding to maintain backwards compatibility. More in #71711 discussion.
cc @dotnet/samsung
The text was updated successfully, but these errors were encountered: