Evan's solution is the right one. However, your code is valid, so it
> crash. I think it dies because linux does not guarantee that
> the stack is 16 byte aligned, and the vector operations expect this. The
> code generator should compensate and dynamically align the stack on entry
> to the function. This should be a relatively straight-forward extension
> to the x86 backend if you're interested.
in fact, if llvm is able to warant (?) that the stack pointer is aligned to 16-byte, there is no reason to DYNAMICALLY align the stack at all entries because thoses operations can be expensive for some architectures. What you need is to align the stack on entry of the "main" function. Of course, if you are mixing calls of llvm functions in non-llvm functions, that's a problem and you probably need to use dynamical alignments.