Hi, That was quick :)
> Your asm has no output operands and no side effects, with more > aggressive optimization the whole ask would disappear. Sorry, that was just a small test file, the original code has output operands. The new test code: static int inline f1(int arg) { register int ret asm("r1"); register int a1 asm("r8") = 10; register int a2 asm("r1") = arg; asm volatile ("scall" : "=r"(ret) : "r"(a1), "r"(a2) : "memory"); return ret; } int f2(int arg1, int arg2) { return f1(arg1 >> 10); } translates to the same assembly: f2: addi sp, sp, -4 sw (sp+4), ra addi r2, r0, 10 calli __ashrsi3 scall lw ra, (sp+4) addi sp, sp, 4 b ra PS. R1 is the return register in the target architecture ABI. -- Michael