Implement IRGen for SEH __finally and AbnormalTermination
Previously we would simply double-emit the body of the __finally block, but that doesn't work when it contains any kind of Decl, which we can't double emit. This fixes that by emitting the block once and branching into a shared code region and then branching back out. llvm-svn: 228222
This commit is contained in:
@@ -43,7 +43,8 @@ CodeGenFunction::CodeGenFunction(CodeGenModule &cgm, bool suppressNewContext)
|
||||
BlockInfo(nullptr), BlockPointer(nullptr),
|
||||
LambdaThisCaptureField(nullptr), NormalCleanupDest(nullptr),
|
||||
NextCleanupDestIndex(1), FirstBlockInfo(nullptr), EHResumeBlock(nullptr),
|
||||
ExceptionSlot(nullptr), EHSelectorSlot(nullptr), SEHPointersDecl(nullptr),
|
||||
ExceptionSlot(nullptr), EHSelectorSlot(nullptr),
|
||||
AbnormalTerminationSlot(nullptr), SEHPointersDecl(nullptr),
|
||||
DebugInfo(CGM.getModuleDebugInfo()), DisableDebugInfo(false),
|
||||
DidCallStackSave(false), IndirectBranch(nullptr), PGO(cgm),
|
||||
SwitchInsn(nullptr), SwitchWeights(nullptr), CaseRangeBlock(nullptr),
|
||||
|
||||
Reference in New Issue
Block a user