The 'call' (long call) instruction is available on avr3 and above,
and devices in avr2 and avr25 should use the 'rcall' (short call)
instruction for function calls.
Details
Details
Diff Detail
Diff Detail
Unit Tests
Unit Tests
Event Timeline
Comment Actions
Looks good to me!
As a possible optimization, you could look into using rcall instead of call instructions when the target is close enough. For example, here: https://godbolt.org/z/rEz9j71dq (apparently avr-gcc doesn't do this optimization).
int foo(int a, int b) { return a + b; } int bar(int a, int b) { return foo(a, b) + 3; }
If -ffunction-sections is not used, rcall is both shorter in code size and faster in execution speed.
(This is just an idea, unrelated to this patch).
Comment Actions
Thanks. I have created an issue to note this task.
https://github.com/llvm/llvm-project/issues/54508