Open
Description
For such code:
struct Struct
{
int i1;
int i2;
int i3;
int i4;
}
[MethodImpl(MethodImplOptions.NoInlining)]
static void Caller(Struct s)
{
Callee(s);
}
we currently generate
IN0004: 000000 stp fp, lr, [sp,#-32]!
IN0005: 000004 mov fp, sp
N0006: 000008 str x0, [fp,#16]
IN0007: 00000C str x1, [fp,#24]
IN0001: 000010 ldr x0, [fp,#16]
IN0002: 000014 ldr x1, [fp,#24]
IN0003: 000018 bl Runtime_52320.C:Callee(Struct)
IN0008: 00001C ldp fp, lr, [sp],#32
IN0009: 000020 ret lr
when, of course, we want something like:
IN0004: 000000 stp fp, lr, [sp,#-32]!
IN0005: 000004 mov fp, sp
IN0003: 000018 bl Runtime_52320.C:Callee(Struct)
IN0008: 00001C ldp fp, lr, [sp],#32
IN0009: 000020 ret lr
not a major thing but lets keep track of it and see if we can support it with the new morph logic.
category:cq
theme:register-allocator