[Mono-dev] issue with mini_type_is_hfa
Bill Seurer
seurer at linux.vnet.ibm.com
Fri Sep 18 15:56:50 UTC 2015
I have been working on fixing things for the new ABI v2 for power and
ran into a problem using mini_type_is_hfa in mini-codegen.c.
The problematic code is:
// FIXME: Nested float structs are aligned to 8 bytes
if (ftype->type == MONO_TYPE_R4)
return FALSE;
So if a nested structure has a float field mini_type_is_hfa returns
false which breaks the v2 ABI.
Example structure from my test case:
// This structure has nested structures within it but they are
// homogenous and thus should still use the special rules.
public struct float4_nested1 {
public float f1;
};
public struct float4_nested2 {
public float f4;
};
[StructLayout(LayoutKind.Sequential)]
public struct float4_nested {
public float4_nested1 nested1;
public float f2,f3;
public float4_nested2 nested2;
I am not sure what the comment is referring to because this structure
appears to be laid out as 4 floats in a row with no padding. I printed
out some info for the class:
klass: Test_float.float4_nested
size: 16
mbr_cnt=4, mbr_size=4
If I remove those two lines from mini_type_is_hfa then it works as
expected and the test case succeeds.
--
-Bill Seurer
More information about the Mono-devel-list
mailing list