diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2023-09-02 21:17:18 +0000 | 
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2023-12-08 17:34:50 +0000 | 
| commit | 06c3fb2749bda94cb5201f81ffdb8fa6c3161b2e (patch) | |
| tree | 62f873df87c7c675557a179e0c4c83fe9f3087bc /contrib/llvm-project/clang/lib/CodeGen/CGCleanup.cpp | |
| parent | cf037972ea8863e2bab7461d77345367d2c1e054 (diff) | |
| parent | 7fa27ce4a07f19b07799a767fc29416f3b625afb (diff) | |
Diffstat (limited to 'contrib/llvm-project/clang/lib/CodeGen/CGCleanup.cpp')
| -rw-r--r-- | contrib/llvm-project/clang/lib/CodeGen/CGCleanup.cpp | 6 | 
1 files changed, 4 insertions, 2 deletions
diff --git a/contrib/llvm-project/clang/lib/CodeGen/CGCleanup.cpp b/contrib/llvm-project/clang/lib/CodeGen/CGCleanup.cpp index 43758ac27e43..0bbab283603d 100644 --- a/contrib/llvm-project/clang/lib/CodeGen/CGCleanup.cpp +++ b/contrib/llvm-project/clang/lib/CodeGen/CGCleanup.cpp @@ -782,7 +782,7 @@ void CodeGenFunction::PopCleanupBlock(bool FallthroughIsBranchThrough) {    if (!RequiresNormalCleanup) {      // Mark CPP scope end for passed-by-value Arg temp      //   per Windows ABI which is "normally" Cleanup in callee -    if (IsEHa && getInvokeDest()) { +    if (IsEHa && getInvokeDest() && Builder.GetInsertBlock()) {        if (Personality.isMSVCXXPersonality())          EmitSehCppScopeEnd();      } @@ -836,7 +836,7 @@ void CodeGenFunction::PopCleanupBlock(bool FallthroughIsBranchThrough) {        EmitBlock(NormalEntry);        // intercept normal cleanup to mark SEH scope end -      if (IsEHa) { +      if (IsEHa && getInvokeDest()) {          if (Personality.isMSVCXXPersonality())            EmitSehCppScopeEnd();          else @@ -1031,6 +1031,8 @@ void CodeGenFunction::PopCleanupBlock(bool FallthroughIsBranchThrough) {      if (!Personality.isMSVCPersonality()) {        EHStack.pushTerminate();        PushedTerminate = true; +    } else if (IsEHa && getInvokeDest()) { +      EmitSehCppScopeEnd();      }      // We only actually emit the cleanup code if the cleanup is either  | 
