It could still be done, even if we inline. There is nothing that prevents us from adding space to the stack allocation only at that point, it's just not coded in gcc to do that.
...and take the stack alloc back after the inlined call is finished. This is what the original example needs; it doesn't actually need to _actually_ do the allocations only where they are needed, just _conceptually_ (i.e., the two calls to c() will actually share their local stack space). Segher