I'm doing a lot of experiments with GDC, and I'm noticing that leaf functions are still generating a stack frame and doing pointless work...

int leaf() pure nothrow
{
  return 0;
}

compile with -frelease -finline -O3, etc

I expect 2 opcodes, load immediate and return, but I get a whole pointless function including memory access O_O

Any ideas? Is this normal?