llvm-project/clang/lib
David Majnemer 7c23707174 MS ABI: Implement support for throwing a C++ exception
Throwing a C++ exception, under the MS ABI, is implemented using three
components:
- ThrowInfo structure which contains information like CV qualifiers,
  what destructor to call and a pointer to the CatchableTypeArray.
- In a significant departure from the Itanium ABI, copying by-value
  occurs in the runtime and not at the catch site.  This means we need
  to enumerate all possible types that this exception could be caught as
  and encode the necessary information to convert from the exception
  object's type to the catch handler's type.  This includes complicated
  derived to base conversions and the execution of copy-constructors.

N.B. This implementation doesn't support the execution of a
copy-constructor from within the runtime for now.  Adding support for
that functionality is quite difficult due to things like default
argument expressions which may evaluate arbitrary code hiding in the
copy-constructor's parameters.

Differential Revision: http://reviews.llvm.org/D8066

llvm-svn: 231328
2015-03-05 00:46:22 +00:00
..
ARCMigrate [SDK modernizer] Patch to fix type of the typed enums when 2015-03-02 23:58:02 +00:00
AST MS ABI: Implement support for throwing a C++ exception 2015-03-05 00:46:22 +00:00
ASTMatchers Add translationUnitDecl matcher. 2015-02-10 14:46:45 +00:00
Analysis Add a format warning for "%p" with non-void* args 2015-03-04 03:12:10 +00:00
Basic Add Clang support for PPC cryptography builtins 2015-03-04 21:48:22 +00:00
CodeGen MS ABI: Implement support for throwing a C++ exception 2015-03-05 00:46:22 +00:00
Driver Pass -dll to link.exe when building with -shared (PR22697) 2015-03-04 23:16:21 +00:00
Edit Edit: Do not extend a removal to include trailing whitespace if we're at the end 2014-09-15 11:47:10 +00:00
Format Make sure we initialize all values in WhitespaceManager::Change. 2015-03-03 14:21:48 +00:00
Frontend [ASTUnit] Fix crash when trying to load a module file via ASTUnit::LoadFromASTFile. 2015-03-03 08:04:19 +00:00
FrontendTool Provide a BuryPointer for unique_ptrs. 2014-08-29 16:53:14 +00:00
Headers Add Clang support for PPC cryptography builtins 2015-03-04 21:48:22 +00:00
Index [libclang] Use same USR encoding for 'char' regardless of what the target considers the sign to be. 2014-12-08 09:09:05 +00:00
Lex [Modules] Fix crash in Preprocessor::getLastMacroWithSpelling(). 2015-03-04 16:03:07 +00:00
Parse Sema: Parenthesized bound destructor member expressions can be called 2015-02-25 17:36:15 +00:00
Rewrite Trim some includes. NFC. 2014-10-29 22:13:46 +00:00
Sema Implement section pragma feedback on r205810 2015-03-04 23:39:17 +00:00
Serialization [modules] Avoid adding a redecl chain to the 'pending out of date' list as the 2015-02-28 05:57:02 +00:00
StaticAnalyzer [analyzer] Bug fix: do not report leaks for alloca() 2015-03-04 23:18:21 +00:00
Tooling Adopt new cl::HideUnrelatedOptions API added r226729. 2015-01-21 23:26:11 +00:00
CMakeLists.txt Fix build with various feature flag combinations 2014-07-14 22:17:22 +00:00
Makefile Make clang's rewrite engine a core feature 2014-07-16 16:48:33 +00:00