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
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to