4ast wrote:
> For store, we could do hit the first store, do adjustment 'r12 += ' then for
> the rest stores, there is no need for adjustment hit a call. In this case, do
> 'r12 -= '.
to know 'first store' JIT would need to do data flow analysis, which is not
feasible.
> My current thinking is there is no need to do explicit 12 adjustments, e.g.,
> to accommodate with code sequences like the above. Second, for each store for
> x86, the offset adjustment is done in jit time. So at runtime, we have no
> overhead at all.
right, no extra overhead is mandatory, but I'm still missing how you think JIT
will do the adjustment.
Like compute the maximum of all *(r12 - N) = .. insn and use that in the
prologue ?
I guess it works, but then this function will reserve more stack then it needs.
like
foo()
{
bar(); // with deep callchain
meh(lots of args);
}
the space needed to call meh() will be reserved upfront, so unnecessary stack
waste while calling bar() ?
For JIT to reserve it right before meh() it would need to know 'first store'
and then consider all possible combinations of calling meh(). gets tricky.
https://github.com/llvm/llvm-project/pull/189060
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits