MS ABI: Emit HandlerMap entries for C++ catch
authorDavid Majnemer <david.majnemer@gmail.com>
Tue, 17 Mar 2015 20:35:05 +0000 (20:35 +0000)
committerDavid Majnemer <david.majnemer@gmail.com>
Tue, 17 Mar 2015 20:35:05 +0000 (20:35 +0000)
commit5f0dd6162c941a32e89052f8848799df0553b7c7
tree930bffd6d833243036aea31edd6bb365508f77ce
parent443250f08da3ea3396586f0349d8d34d42223633
MS ABI: Emit HandlerMap entries for C++ catch

The HandlerMap describes, to the runtime, what sort of catches surround
the try.  In principle, this structure has to be emitted by the backend
because only it knows the layout of the stack (the runtime needs to know
where on the stack the destination of a copy lives, etc.) but there is
some C++ specific information that the backend can't reason about.

Stick this information in special LLVM globals with the relevant
"const", "volatile", "reference" info mangled into the name.

llvm-svn: 232538
clang/include/clang/AST/Mangle.h
clang/lib/AST/MicrosoftMangle.cpp
clang/lib/CodeGen/CGCXXABI.h
clang/lib/CodeGen/CGException.cpp
clang/lib/CodeGen/CodeGenModule.cpp
clang/lib/CodeGen/CodeGenModule.h
clang/lib/CodeGen/ItaniumCXXABI.cpp
clang/lib/CodeGen/MicrosoftCXXABI.cpp
clang/test/CodeGenCXX/microsoft-abi-try-throw.cpp