haberman added inline comments.

================
Comment at: clang/lib/Sema/TreeTransform.h:1316
                                    Stmt *SubStmt) {
-    return SemaRef.ActOnAttributedStmt(AttrLoc, Attrs, SubStmt);
+    return SemaRef.BuildAttributedStmt(AttrLoc, Attrs, SubStmt);
   }
----------------
aaron.ballman wrote:
> haberman wrote:
> > aaron.ballman wrote:
> > > erichkeane wrote:
> > > > Am I missing where the attributes themselves are being 
> > > > rebuilt/transformed??  
> > > > 
> > > > 
> > > The transformation happens in 
> > > `TreeTransform<Derived>::TransformAttributedStmt()` which calls 
> > > `RebuildAttributedStmt()` with the rebuilt attributes.
> > It appears that neither `TransformAttributedStmt()` nor 
> > `RebuildAttributedStmt()` calls `ProcessStmtAttributes()`, either directly 
> > or transitively, so I'm not seeing where we can run instantiation-time 
> > attribute processing logic. What am I missing?
> My thinking is: 
> 
> * From `handleMustTailAttr()` in SemaStmtAttr.cpp, call `CheckMustTailAttr()` 
> to do the shared semantic checking.
> * Add a `TransformMustTailAttr()` to `TreeTransform`, have it call 
> `SemaRef.CheckMustTailAttr()` as well.
I see. My main concern then is that `TransformMustTailAttr()` could get access 
to the `ReturnExpr` to perform the validation. Right now the `MustTailAttr` 
doesn't appear to have any reference to the `ReturnExpr`, and I don't know how 
to give it one.

If there is a solution to this problem, I don't have any objection. My main 
concern is to unblock my change which is a high priority for me and my team.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D99896/new/

https://reviews.llvm.org/D99896

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to