Skip to content
  • Duncan Sands's avatar
    The C++ exception handling personality function wants · 030bce7b
    Duncan Sands authored
    to know about calls that cannot throw ('nounwind'):
    if such a call does throw for some reason then the
    personality will terminate the program.  The distinction
    between an ordinary call and a nounwind call is that
    an ordinary call gets an entry in the exception table
    but a nounwind call does not.  This patch sets up the
    exception table appropriately.  One oddity is that
    I've chosen to bracket nounwind calls with labels (like
    invokes) - the other choice would have been to bracket
    ordinary calls with labels.  While bracketing
    ordinary calls is more natural (because bracketing
    by labels would then correspond exactly to getting an
    entry in the exception table), I didn't do it because
    introducing labels impedes some optimizations and I'm
    guessing that ordinary calls occur more often than
    nounwind calls.  This fixes the gcc filter2 eh test,
    at least at -O0 (the inliner needs some tweaking at
    higher optimization levels).
    
    llvm-svn: 45197
    030bce7b
Loading