Use C99 variable-length arrays instead of alloca().

Much cleaner. Seems to help with code generation too.