summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CGException.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Replace some SmallVectors with arrays.Benjamin Kramer2010-03-181-21/+13
| | | | llvm-svn: 98833
* More refactoring around constructor/destructor code generation.John McCall2010-02-191-45/+23
| | | | | | | | | | | | Fix some bugs with function-try-blocks and simplify normal try-block code generation. This implementation excludes a deleting destructor's call to operator delete() from the function-try-block, which I believe is correct but which I can't find straightforward support for at a moment's glance. llvm-svn: 96670
* Switch to using -fsjlj-exceptions instead of hard-coding it. Notably, this fixesDaniel Dunbar2010-02-101-5/+1
| | | | | | | calls to the UnwindResumeOrRethrow function for C++/Obj-C exception handling, for Darwin ARM. llvm-svn: 95787
* Make sure to set vtable pointers in the destructors as well.Anders Carlsson2010-02-071-0/+1
| | | | llvm-svn: 95525
* Make EmitStartEHSpec and EmitEndEHSpec return early when exceptions are ↵Anders Carlsson2010-02-061-0/+6
| | | | | | disabled. llvm-svn: 95509
* Standardize the parsing of function type attributes in a way thatJohn McCall2010-02-051-6/+7
| | | | | | | | | | | | follows (as conservatively as possible) gcc's current behavior: attributes written on return types that don't apply there are applied to the function instead, etc. Only parse CC attributes as type attributes, not as decl attributes; don't accepet noreturn as a decl attribute on ValueDecls, either (it still needs to apply to other decls, like blocks). Consistently consume CC/noreturn information throughout codegen; enforce this by removing their default values in CodeGenTypes::getFunctionInfo(). llvm-svn: 95436
* Fix last patch, catch of reference to non-pointer.Mike Stump2010-01-011-10/+12
| | | | llvm-svn: 92386
* Fix catching a reference to a pointer.Mike Stump2010-01-011-3/+15
| | | | llvm-svn: 92385
* Pass ReturnValueSlot to EmitCall. No functionality change yet.Anders Carlsson2009-12-241-2/+2
| | | | llvm-svn: 92138
* Cleanup some dead code.Mike Stump2009-12-241-3/+1
| | | | llvm-svn: 92122
* There is no such thing as typeinfo for a cv-qualified type. AssertDouglas Gregor2009-12-231-2/+7
| | | | | | | | that this is true when mangling, then fix up the various places in Sema and/or CodeGen that need to remove qualifiers. Addresses a linking issue when building LLVM with Clang. llvm-svn: 92064
* Rename GetAddrOfRTTI to GetAddrOfRTTIDescriptor. Remove the overload that ↵Anders Carlsson2009-12-171-5/+5
| | | | | | takes a CXXRecordDecl since we were just creating a QualType from it anyway. llvm-svn: 91590
* Ensure we run cleanups for CXXTemporaries on the exceptional edge. WIP.Mike Stump2009-12-171-1/+21
| | | | llvm-svn: 91588
* Use GetAddrOfRTTI everywhere and remove GenerateRTTI and GenerateRTTIRef. ↵Anders Carlsson2009-12-161-5/+4
| | | | | | With this change, we can now compile and link TableGen. llvm-svn: 91520
* Silence some release build warnings.Chandler Carruth2009-12-131-0/+1
| | | | llvm-svn: 91234
* Un-namespace-qualify llvm_unreachable. It's a macro, so the qualification gaveJeffrey Yasskin2009-12-121-2/+2
| | | | | | no extra safety anyway. llvm-svn: 91207
* When an exception needs to be freed by calling __cxa_exception_free, make ↵Anders Carlsson2009-12-111-12/+20
| | | | | | | | sure to stash away the exception pointer somewhere. This fixes an "Instruction does not dominate all uses!" verification error when compiling TableGen. llvm-svn: 91084
* Fix spacing.Mike Stump2009-12-111-1/+1
| | | | llvm-svn: 91078
* Setup cleanup on eh edge out of the construction of the cleanup objectMike Stump2009-12-101-12/+6
| | | | | | during throw to deallocate the exception object. WIP. llvm-svn: 91035
* Fixup spacing.Mike Stump2009-12-101-41/+41
| | | | llvm-svn: 91001
* Ensure we only generate one terminate handler.Mike Stump2009-12-101-1/+4
| | | | llvm-svn: 90998
* Remove obsolete FIXME and some dead fallback code.Mike Stump2009-12-091-6/+0
| | | | llvm-svn: 90997
* Add terminate handler for copy constructors for thrown objects. WIP.Mike Stump2009-12-091-2/+16
| | | | llvm-svn: 90994
* Break out code for reuse. WIP.Mike Stump2009-12-091-22/+39
| | | | llvm-svn: 90991
* Add cleanups for exceptional edges. WIP.Mike Stump2009-12-091-0/+52
| | | | llvm-svn: 90940
* Add fixme.Mike Stump2009-12-081-0/+1
| | | | llvm-svn: 90884
* Remove some old code. WIP.Mike Stump2009-12-081-5/+0
| | | | llvm-svn: 90882
* Fixup catch parameters with class reference type. WIP.Mike Stump2009-12-081-1/+1
| | | | llvm-svn: 90821
* Add codegen support for exception specifications. WIP.Mike Stump2009-12-071-0/+119
| | | | llvm-svn: 90817
* Work around emitters that can't deal with dead code contexts yet.Mike Stump2009-12-071-0/+4
| | | | llvm-svn: 90796
* Add support for function try blocks.Mike Stump2009-12-041-1/+35
| | | | llvm-svn: 90622
* Fixup nested try blocks.Mike Stump2009-12-041-2/+12
| | | | llvm-svn: 90576
* Fix warning and be sure to set up the rethrow pointer if we fall offMike Stump2009-12-041-3/+5
| | | | | | the end of all the catches. llvm-svn: 90574
* Try/catch statements seem to be working well enough to turn on.Mike Stump2009-12-041-1/+1
| | | | llvm-svn: 90538
* Disable for now, doesn't play nice with the temporary code.Mike Stump2009-12-041-1/+5
| | | | llvm-svn: 90537
* Fixup reference binding for catch parameters.Mike Stump2009-12-041-6/+21
| | | | | | Fixup throws and rethrows to use invoke as appropriate. llvm-svn: 90513
* These are done.Mike Stump2009-12-031-2/+0
| | | | llvm-svn: 90494
* Improve catch parameter bindings for scalar non-pointers. WIP.Mike Stump2009-12-031-4/+8
| | | | llvm-svn: 90492
* Reflow.Mike Stump2009-12-031-1/+3
| | | | llvm-svn: 90407
* Remove untrue statement.Mike Stump2009-12-031-3/+0
| | | | llvm-svn: 90377
* Cleanups on exceptional edges don't work at all, yet. This doesn'tMike Stump2009-12-021-5/+0
| | | | | | | 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
* Add a cleanup scope for each catch clause.Mike Stump2009-12-021-15/+19
| | | | llvm-svn: 90357
* Pull the terminate handler up so that we can use it for the catchMike Stump2009-12-021-35/+31
| | | | | | | parameter setup code and set up the catch parameter setup code to protect that code with terminate. llvm-svn: 90340
* Change rtti/Rtti to RTTI, as it is an acronym.Mike Stump2009-12-021-2/+3
| | | | llvm-svn: 90334
* Avoid warning for getTerminateFn defined but not used.Mike Stump2009-12-021-9/+3
| | | | llvm-svn: 90330
* terminate doesn't throw.Mike Stump2009-12-021-0/+1
| | | | llvm-svn: 90308
* More exception handling improvements... WIP.Mike Stump2009-12-021-30/+71
| | | | | | | | | | | 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
* Much work on try/catch statement. WIP.Mike Stump2009-12-011-69/+250
| | | | | | | | | | | | | | | | | 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
* Checkpoint current work. WIP.Mike Stump2009-11-201-2/+126
| | | | llvm-svn: 89513
* Implement throw d, where d is a class type that requires copyMike Stump2009-11-201-2/+22
| | | | | | construction. WIP. llvm-svn: 89442
OpenPOWER on IntegriCloud