[PATCH] D158591: Add support of Windows Trace Logging macros
Corentin Jabot via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Aug 23 06:05:22 PDT 2023
cor3ntin added inline comments.
================
Comment at: clang/lib/Sema/Sema.cpp:1495-1499
+ DeclContext *DC = CurContext;
+ while (DC && !isa<BlockDecl>(DC) && !isa<CapturedDecl>(DC) &&
+ !isa<FunctionDecl>(DC) && !isa<ObjCMethodDecl>(DC))
+ DC = DC->getParent();
+ return dyn_cast_or_null<Decl>(DC);
----------------
RIscRIpt wrote:
> cor3ntin wrote:
> > I think this is reimplementing `getCurFunctionOrMethodDecl`
> > maybe we want to do
> >
> > ```
> > if(Decl* DC = getCurFunctionOrMethodDecl())
> > return DC;
> > return dyn_cast_or_null<Decl>(CurrentContext);
> > ```
> >
> > Or something like that
> Well, unfortunately, not really.
>
> The previous implementation did call `getCurFunctionOrMethodDecl()`, but it returned nullptr when we were inside a RecordDecl.
> If you examine the implementation of `getFunctionLevelDeclContext(bool AllowLambda)`, it halts if `isa<RecordDecl>(DC)`. I tried patching `getFunctionLevelDeclContext()` to skip RecordDecl, but this triggered around 70 clang/tests. I didn't want to delve into understanding the failure of each test. If you believe there's an issue with our current code, I can allocate time to investigate each specific test case.
You are right, i missed that.
I wish we had a better name for this function but I can't think of anything
================
Comment at: clang/lib/Sema/Sema.cpp:1496-1497
+ DeclContext *DC = CurContext;
+ while (DC && !isa<BlockDecl>(DC) && !isa<CapturedDecl>(DC) &&
+ !isa<FunctionDecl>(DC) && !isa<ObjCMethodDecl>(DC))
+ DC = DC->getParent();
----------------
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D158591/new/
https://reviews.llvm.org/D158591
More information about the cfe-commits
mailing list