34 Commits

Author SHA1 Message Date
Mike Stump
3b60f034f9 Remove obsolete FIXME and some dead fallback code.
llvm-svn: 90997
2009-12-09 23:52:09 +00:00
Mike Stump
25b20fc2ae Add terminate handler for copy constructors for thrown objects. WIP.
llvm-svn: 90994
2009-12-09 23:31:35 +00:00
Mike Stump
2b488873bf Break out code for reuse. WIP.
llvm-svn: 90991
2009-12-09 22:59:31 +00:00
Mike Stump
aff69af918 Add cleanups for exceptional edges. WIP.
llvm-svn: 90940
2009-12-09 03:35:49 +00:00
Mike Stump
4a6b337cfd Add fixme.
llvm-svn: 90884
2009-12-08 22:12:48 +00:00
Mike Stump
e6d54ca553 Remove some old code. WIP.
llvm-svn: 90882
2009-12-08 21:46:41 +00:00
Mike Stump
02c23d68cb Fixup catch parameters with class reference type. WIP.
llvm-svn: 90821
2009-12-08 01:29:31 +00:00
Mike Stump
1d849219a5 Add codegen support for exception specifications. WIP.
llvm-svn: 90817
2009-12-07 23:38:24 +00:00
Mike Stump
62afe99814 Work around emitters that can't deal with dead code contexts yet.
llvm-svn: 90796
2009-12-07 20:12:14 +00:00
Mike Stump
bee78dd31b Add support for function try blocks.
llvm-svn: 90622
2009-12-04 23:26:17 +00:00
Mike Stump
875912ac13 Fixup nested try blocks.
llvm-svn: 90576
2009-12-04 19:21:57 +00:00
Mike Stump
5c820758f5 Fix warning and be sure to set up the rethrow pointer if we fall off
the end of all the catches.

llvm-svn: 90574
2009-12-04 19:03:47 +00:00
Mike Stump
8c1253b4c2 Try/catch statements seem to be working well enough to turn on.
llvm-svn: 90538
2009-12-04 03:57:07 +00:00
Mike Stump
2ab55765f7 Disable for now, doesn't play nice with the temporary code.
llvm-svn: 90537
2009-12-04 03:55:53 +00:00
Mike Stump
114ab9f695 Fixup reference binding for catch parameters.
Fixup throws and rethrows to use invoke as appropriate.

llvm-svn: 90513
2009-12-04 01:51:45 +00:00
Mike Stump
5f141b75f9 These are done.
llvm-svn: 90494
2009-12-03 22:55:42 +00:00
Mike Stump
7398ff0f07 Improve catch parameter bindings for scalar non-pointers. WIP.
llvm-svn: 90492
2009-12-03 22:38:15 +00:00
Mike Stump
2842b4cf86 Reflow.
llvm-svn: 90407
2009-12-03 03:40:14 +00:00
Mike Stump
26ada867ba Remove untrue statement.
llvm-svn: 90377
2009-12-03 01:34:13 +00:00
Mike Stump
2d52ce5f94 Cleanups on exceptional edges don't work at all, yet. This doesn't
catch very many of them and if we caught all of them, the errors would
be annoying.  I'm working on this next.  WIP.

llvm-svn: 90358
2009-12-02 23:46:02 +00:00
Mike Stump
90990965e0 Add a cleanup scope for each catch clause.
llvm-svn: 90357
2009-12-02 23:37:16 +00:00
Mike Stump
9732915bf9 Pull the terminate handler up so that we can use it for the catch
parameter setup code and set up the catch parameter setup code to
protect that code with terminate.

llvm-svn: 90340
2009-12-02 19:53:57 +00:00
Mike Stump
c01c2b87e8 Change rtti/Rtti to RTTI, as it is an acronym.
llvm-svn: 90334
2009-12-02 18:57:08 +00:00
Mike Stump
a9a590cd12 Avoid warning for getTerminateFn defined but not used.
llvm-svn: 90330
2009-12-02 18:20:18 +00:00
Mike Stump
a510597ef9 terminate doesn't throw.
llvm-svn: 90308
2009-12-02 08:18:09 +00:00
Mike Stump
33270211a0 More exception handling improvements... WIP.
Highlights include:

  Add a helper to generate __cxa_free_exception and _ZSt9terminatev.
  Add a region to handle EH object deallocation for ctor failures for throw.
  Add a terminate handler for __cxa_end_catch.
  A framework for adding cleanup actions for the exceptional edges only.

llvm-svn: 90305
2009-12-02 07:41:41 +00:00
Mike Stump
5406614be9 Much work on try/catch statement. WIP.
Highlights include:

  Fix __cxa_begin_catch so it now returns a value.
  Added getUnwindResumeOrRethrowFn helper to build up calls to
  _Unwind_Resume_or_Rethrow.
  Broke out object copying code into CopyObject from EmitCXXThrowExpr.
  Built up another version of CopyObject that can copy from memory for
  use in the catch parameter code.
  RTTI generation for type matching for catch.
  Code to check for the type match for catch.
  Code to generate the catch parameter, WIP, need make sure references
  and pointers and copy ctors work.

llvm-svn: 90205
2009-12-01 03:41:18 +00:00
Mike Stump
58ef18b38c Checkpoint current work. WIP.
llvm-svn: 89513
2009-11-20 23:44:51 +00:00
Mike Stump
d8d26d06a5 Implement throw d, where d is a class type that requires copy
construction.  WIP.

llvm-svn: 89442
2009-11-20 02:31:07 +00:00
Mike Stump
4d7a07bdaf Handle throw d, where d is a class type but only has a trivial copy
constructor.  WIP.

llvm-svn: 89438
2009-11-20 01:57:39 +00:00
Mike Stump
d1782cc478 Add suport for throw;. WIP.
llvm-svn: 89424
2009-11-20 00:56:31 +00:00
Mike Stump
18fc44dfd3 Fix rtti generation for throws. WIP.
llvm-svn: 89420
2009-11-20 00:43:57 +00:00
Anders Carlsson
32e1b1c169 Get throws limping along, still a bunch of FIXMEs. Too bad we don't support catching anything yet :)
llvm-svn: 85574
2009-10-30 02:27:02 +00:00
Anders Carlsson
4b08db7a62 Add CGException.cpp, to be used for exception related code generation.
llvm-svn: 85560
2009-10-30 01:42:31 +00:00