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
This commit is contained in:
David Majnemer
2015-03-17 20:35:05 +00:00
parent 443250f08d
commit 5f0dd6162c
9 changed files with 93 additions and 14 deletions

View File

@@ -3644,8 +3644,10 @@ llvm::Constant *CodeGenModule::EmitUuidofInitializer(StringRef Uuid) {
return llvm::ConstantStruct::getAnon(Fields);
}
llvm::Constant *CodeGenModule::getAddrOfCXXCatchDescriptor(QualType Ty) {
return getCXXABI().getAddrOfCXXCatchDescriptor(Ty);
llvm::Constant *
CodeGenModule::getAddrOfCXXHandlerMapEntry(QualType Ty,
QualType CatchHandlerType) {
return getCXXABI().getAddrOfCXXHandlerMapEntry(Ty, CatchHandlerType);
}
llvm::Constant *CodeGenModule::GetAddrOfRTTIDescriptor(QualType Ty,