builtin_setjmp in combination with the sjlj exception handling style was broken. This was caused by the strange decision to produce exception handling dispatch jump tables upon seeing the setjmp instruction. This resulted in builtin_setjmp being broken on ARM because it tried to build those dispatch tables with no sjlj exception handling code being present.
Commit message: SJLJ exception handling expects the backends to emit dispatch jump
tables at the beginning of the function, we cannot reuse llvm.eh.sjlj.setjmp to trigger this effect or we get into trouble when __builtin_setjmp was used independently of exception handling.
To solve this issue a new llvm.eh.sjlj.setup_dispatch intrinsic is
introduces which is used instead of llvm.eh.sjlj.setjmp in the sjlj
exception handling style.