[cfe-dev] LLVM/Clang and setjmp/longjmp exception handling on MinGW

Ruben Van Boxem vanboxem.ruben at gmail.com
Sun Oct 9 05:57:22 PDT 2011


In my neverending hobby quest to make all of LLVM better on Windows, I am
now stumbling over setjmp/longjmp and sjlj exception handling. To test I'm
linking with GCC 4.6's libstdc++ and libgcc. The problem also occurs with
libc++ and GCC's libsupc++.

I have attached the assembly output for a very simple exception testing
#include <stdexcept>
#include <iostream>
using namespace std;

int main()
    try { throw runtime_error( "Hello world!" ); }
    catch( exception &e ) { cout << e.what(); }

GCC produces the sjlj initialization code, where Clang does not. Is sjlj
exception handling not used with Clang or is this a genuine bug?

Will fixing this hinder future efforts of using/porting stdcxxrt and
libunwind for MinGW, or will "flipping a hardcoded switch" be enough to make
that transition?


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20111009/a0063b2c/attachment.html>

More information about the cfe-dev mailing list