I have read this blog post, this documentation page and this example, but I still don\'t understand how to throw a basic exception using the LLVM\'s IRBuilder for a non-C++ orie
As you don't want to use existing C++ exception handling infrastructure, you'll need to replicate parts of it for your language.
You can use the implementation of C unwinder in compiler-rt (or significantly more complex one in libstdc++), and invocation of an unwinder in libstdc++ to start with.
Short answer is that _Unwind_RaiseException
is not a C++-specific function. It comes from the libunwind library, and allows to throw any type of exception.
More details can be found on these blog posts.