[PATCH] D150340: [SEH]:Fix assertion when try is used inside catch(...) block with /EHa
Eli Friedman via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu May 11 14:27:10 PDT 2023
efriedma added inline comments.
================
Comment at: clang/lib/CodeGen/CGException.cpp:650
+ llvm::FunctionCallee SehCppScope = getSehTryBeginFn(CGM);
+ EmitSehScope(SehCppScope);
+ }
----------------
jyu2 wrote:
> efriedma wrote:
> > Do we need to make the same change in EmitSEHTryStmt/ExitSEHTryStmt?
> >
> > Is there some reason not to just call EmitSehTryScopeBegin here?
> EmitSehTryScopeBegin: it is emit seh.scope.begin
>
> In here we want to emit seh.try.begin. call EmitSehSCope with different function.
>
> For EmitSEHTryStmt/ExitSEHTryStmt if is for __try /__except/__finally and it is for C code. I thought about that. And tried some test(BTW, try and __try can not be in same construct), I don't see the problem. So I did not add that.
Not sure I understand what you're saying about EmitSehTryScopeBegin. CGException.cpp:45 refers to "llvm.seh.try.begin". CGCleanup.cpp:1370 also refers to "llvm.seh.try.begin"
For EmitSEHTryStmt/ExitSEHTryStmt, I guess __try codegen can't generate a construct quite like the given testcase, so thta's fine.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D150340/new/
https://reviews.llvm.org/D150340
More information about the cfe-commits
mailing list