Skip to content
  1. Aug 15, 2009
  2. Aug 11, 2009
    • Jim Grosbach's avatar
      SjLj based exception handling unwinding support. This patch is nasty, brutish · 693e36a3
      Jim Grosbach authored
      and short. Well, it's kinda short. Definitely nasty and brutish.
      
      The front-end generates the register/unregister calls into the SjLj runtime,
      call-site indices and landing pad dispatch. The back end fills in the LSDA
      with the call-site information provided by the front end. Catch blocks are
      not yet implemented.
      
      Built on Darwin and verified no llvm-core "make check" regressions.
      
      llvm-svn: 78625
      693e36a3
  3. Aug 05, 2009
  4. May 14, 2009
  5. Dec 29, 2008
  6. Dec 11, 2008
  7. Sep 22, 2007
  8. Sep 07, 2007
  9. Aug 27, 2007
    • Duncan Sands's avatar
      There is an impedance matching problem between LLVM and · ef5a6542
      Duncan Sands authored
      gcc exception handling: if an exception unwinds through
      an invoke, then execution must branch to the invoke's
      unwind target.  We previously tried to enforce this by
      appending a cleanup action to every selector, however
      this does not always work correctly due to an optimization
      in the C++ unwinding runtime: if only cleanups would be
      run while unwinding an exception, then the program just
      terminates without actually executing the cleanups, as
      invoke semantics would require.  I was hoping this
      wouldn't be a problem, but in fact it turns out to be the
      cause of all the remaining failures in the LLVM testsuite
      (these also fail with -enable-correct-eh-support, so turning
      on -enable-eh didn't make things worse!).  Instead we need
      to append a full-blown catch-all to the end of each
      selector.  The correct way of doing this depends on the
      personality function, i.e. it is language dependent, so
      can only be done by gcc.  Thus this patch which generalizes
      the eh.selector intrinsic so that it can handle all possible
      kinds of action table entries (before it didn't accomodate
      cleanups): now 0 indicates a cleanup, and filters have to be
      specified using the number of type infos plus one rather than
      the number of type infos.  Related gcc patches will cause
      Ada to pass a cleanup (0) to force the selector to always
      fire, while C++ will use a C++ catch-all (null).
      
      llvm-svn: 41484
      ef5a6542
  10. Jul 04, 2007
  11. Apr 16, 2007
  12. Apr 14, 2007
  13. Mar 30, 2007
  14. Mar 14, 2007
Loading