On 2017-04-07 14:02, Lars Knoll wrote:
There might be a little catch with regards to structs containing
members that are 8 bytes in size (aka quint64). Are those getting
passed in registers on 32bit ARM?
struct struct_16Bytes
{
unsigned long long first, second;
};
unsigned long long test(struct_16Bytes s)
{
return s.second;
}
Generates:
mov r0, r2 ; Each member fills in two registers
mov r1, r3
bx lr
If I change the signature to: "test(const struct_16Bytes &s)", then it
generates:
ldr r2, [r0, #8] ; ldrs are slow, since they read from
memory
ldr r1, [r0, #12]
mov r0, r2
bx lr
(Tested on ARM 32bit, clang -target arm-none-linux-gnueabi)
Regards,
--
SĂ©rgio Martins | sergio.mart...@kdab.com | Senior Software Engineer
Klarälvdalens Datakonsult AB, a KDAB Group company
Tel: Sweden (HQ) +46-563-540090, USA +1-866-777-KDAB(5322)
KDAB - The Qt, C++ and OpenGL Experts
_______________________________________________
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development