Displaying 3 results from an estimated 3 matches for "callmi".
Did you mean:
callme
2020 Apr 15
2
[ARM] Register pressure with -mthumb forces register reload before each call
...nfo.
> For the following case:
>
> void f(int x, int y, int z)
> {
> void bar(int, int, int);
>
> bar(x, y, z);
> bar(x, z, y);
> bar(y, x, z);
> bar(y, y, x);
> }
>
> it calls foldMemoryOperand twice, and thus converts two calls from blx to bl.
> callMI->dump() shows the function name "bar" correctly, however in
> generated assembly call to bar is garbled:
> (compiled with -Oz --target=arm-linux-gnueabi -marcha=armv6-m):
>
> add r7, sp, #16
> mov r6, r2
> mov r5, r1
> mo...
2020 Apr 15
4
[ARM] Register pressure with -mthumb forces register reload before each call
...ave attached WIP patch for adding foldMemoryOperand to Thumb1InstrInfo.
For the following case:
void f(int x, int y, int z)
{
void bar(int, int, int);
bar(x, y, z);
bar(x, z, y);
bar(y, x, z);
bar(y, y, x);
}
it calls foldMemoryOperand twice, and thus converts two calls from blx to bl.
callMI->dump() shows the function name "bar" correctly, however in
generated assembly call to bar is garbled:
(compiled with -Oz --target=arm-linux-gnueabi -marcha=armv6-m):
add r7, sp, #16
mov r6, r2
mov r5, r1
mov r4, r0
bl "...
2020 Apr 07
2
[ARM] Register pressure with -mthumb forces register reload before each call
If I'm understanding what's going on in this test correctly, what's happening is:
* ARMTargetLowering::LowerCall prefers indirect calls when a function is called at least 3 times in minsize
* In thumb 1 (without -fno-omit-frame-pointer) we have effectively only 3 callee-saved registers (r4-r6)
* The function has three arguments, so those three plus the register we need to hold the