tentzen added a comment.
In D77982#1981505 <https://reviews.llvm.org/D77982#1981505>, @efriedma wrote:
> Searching LocalDeclMap is less problematic, I guess... but still, it should
> be possible to something more straightforward. Maybe make
> startOutlinedSEHHelper store the actual ImplicitParamDecl, or something like
> that.
I respectfully disagree. Two reasons:
(1) Nested filter within a _finally is a rare case. Scanning
CGF.LocalDeclMap is not much different from retrieving it from
CGF.FuncletFramePointerAddr. Why do we want to store a redundant information
in CGF for a rare case of one specific target?
(2) The code a paremeter’s home address is allocated today is in
EmitParmDecl() which (and two its callers in call-stack) are all target
agnostic functions. See code and call-stack below. To store DeclPtr in CGF for
SEH filter only would require some target-specific code in those functions. Do
you really think it’s what you want? I thought one implementation philosophy is
to avoid target-specific code in target-independent functions.
// Otherwise, create a temporary to hold the value.
DeclPtr = CreateMemTemp(Ty, getContext().getDeclAlign(&D), D.getName()
+ ".addr");
clang-cl.exe!clang::CodeGen::CodeGenFunction::EmitParmDecl(const
clang::VarDecl & D, clang::CodeGen::CodeGenFunction::ParamValue Arg, unsigned
int ArgNo) Line 2434 C++
clang-cl.exe!clang::CodeGen::CodeGenFunction::EmitFunctionProlog(const
clang::CodeGen::CGFunctionInfo & FI, llvm::Function * Fn, const
clang::CodeGen::FunctionArgList & Args) Line 2631 C++
clang-cl.exe!clang::CodeGen::CodeGenFunction::StartFunction(clang::GlobalDecl
GD, clang::QualType RetTy, llvm::Function * Fn, const
clang::CodeGen::CGFunctionInfo & FnInfo, const clang::CodeGen::FunctionArgList
& Args, clang::SourceLocation Loc, clang::SourceLocation StartLoc) Line 1065 C++
clang-cl.exe!clang::CodeGen::CodeGenFunction::startOutlinedSEHHelper(clang::CodeGen::CodeGenFunction
& ParentCGF, bool IsFilter, const clang::Stmt * OutlinedStmt) Line 2157 C++
clang-cl.exe!clang::CodeGen::CodeGenFunction::GenerateSEHFinallyFunction(clang::CodeGen::CodeGenFunction
& ParentCGF, const clang::SEHFinallyStmt & Finally) Line 2190 C++
clang-cl.exe!clang::CodeGen::CodeGenFunction::EnterSEHTryStmt(const
clang::SEHTryStmt & S) Line 2315 C++
clang-cl.exe!clang::CodeGen::CodeGenFunction::EmitSEHTryStmt(const
clang::SEHTryStmt & S) Line 1622 C++
clang-cl.exe!clang::CodeGen::CodeGenFunction::EmitStmt(const
clang::Stmt * S, llvm::ArrayRef<clang::Attr const *> Attrs) Line 191 C++
clang-cl.exe!clang::CodeGen::CodeGenFunction::EmitCompoundStmtWithoutScope(const
clang::CompoundStmt & S, bool GetLast, clang::CodeGen::AggValueSlot AggSlot)
Line 446 C++
clang-cl.exe!clang::CodeGen::CodeGenFunction::EmitFunctionBody(const
clang::Stmt * Body) Line 1159 C++
clang-cl.exe!clang::CodeGen::CodeGenFunction::GenerateCode(clang::GlobalDecl
GD, llvm::Function * Fn, const clang::CodeGen::CGFunctionInfo & FnInfo) Line
1325 C++
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D77982/new/
https://reviews.llvm.org/D77982
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits