ChuanqiXu added a comment.

It looks not easy to review completely. After a rough review, the first suggest 
is to remove the contents that should be in 'D102147 
<https://reviews.llvm.org/D102147>', it makes the complex problem more complex 
I think.
I would try to do more detailed review and test it if possible.



================
Comment at: clang/include/clang/AST/StmtCXX.h:331-335
+    ReturnValue, ///< Return value for thunk function: p.get_return_object().
+    ResultDecl,  ///< Declaration holding the result of get_return_object.
+    ReturnStmt,  ///< Return statement for the thunk function.
     ReturnStmtOnAllocFailure, ///< Return statement if allocation failed.
     FirstParamMove ///< First offset for move construction of parameter copies.
----------------
Minor issue: the intention of the comments should be the same.


================
Comment at: clang/include/clang/AST/StmtCXX.h:356-359
     Expr *Allocate = nullptr;
     Expr *Deallocate = nullptr;
+    Expr *AlignedAllocate = nullptr;
+    Expr *AlignedDeallocate = nullptr;
----------------
ChuanqiXu wrote:
> ychen wrote:
> > ChuanqiXu wrote:
> > > ychen wrote:
> > > > ChuanqiXu wrote:
> > > > > Can't we merge these?
> > > > I'm not sure about the "merge" here. Could you be more explicit?
> > > Sorry. I mean if we can merge `Allocate` with `AlignedAllocate` and merge 
> > > `Deallocate` with `AlignedDeallocate`. Since from the implementation, it 
> > > looks like the value of `Allocate` and `AlignedAllocate ` (so as 
> > > `Deallocate` and `AlignedDeallocate`) are the same.
> > Oh, this is to set the path for D102147 where `Allocate` and 
> > `AlignedAllocate` could be different. If I do this in D102147, it will also 
> > touch the `CGCoroutine.cpp` which I'm trying to avoid` since it is intended 
> > to be a Sema only patch.
> Yeah, this is the key different point between us. I think that `D102147` 
> could and should to touch the CodeGen part.
As we discussed before, I prefer to merge `Allocate` and `AlignedAllocate` 
(also Deallocate and AlignedDeallocate ) in this patch. It looks weird the are 
the same in one commit.


================
Comment at: clang/lib/CodeGen/CGCoroutine.cpp:420
+
+void overAllocateFrame(CodeGenFunction &CGF, llvm::CallInst *CI, bool IsAlloc) 
{
+  unsigned CoroSizeIdx = IsAlloc ? 0 : 1;
----------------
We should capitalize it as 'OverAllocateFrame'


================
Comment at: clang/lib/CodeGen/CGCoroutine.cpp:701-706
+  if (HasAlignArg) {
+    if (S.getReturnStmtOnAllocFailure()) {
+      auto *Cond = Builder.CreateICmpNE(AlignedAllocateCall, NullPtr);
+      Builder.CreateCondBr(Cond, InitBB, RetOnFailureBB);
+    }
+  } else {
----------------
`if (HasAlignArg)` should be the content of the next patch 'D102147', right? I 
don't think they should come here.


================
Comment at: clang/lib/CodeGen/CGCoroutine.cpp:743-744
+        CGM.getIntrinsic(llvm::Intrinsic::coro_align, SizeTy));
+    auto *AlignedUpAddr = EmitBuiltinAlignTo(AlignedAllocateCall, CoroAlign,
+                                             S.getAlignedAllocate(), true);
+    // rawFrame = frame;
----------------
Maybe we could calculate it in place instead of trying to call a function which 
is not designed for llvm::value*. It looks like the calculation isn't too 
complex.


================
Comment at: clang/lib/CodeGen/CGCoroutine.cpp:753
+  }
+
   EmitBlock(InitBB);
----------------
Does here miss a branch to InitBB?


================
Comment at: clang/lib/CodeGen/CodeGenFunction.h:1920-1921
 
+  llvm::Value *EmitBuiltinAlignTo(void *Args, const Expr *E, bool AlignUp);
+
 public:
----------------
We shouldn't add this interface. The actual type for the first argument is 
BuiltinAlignArgs*, which defined in .cpp files. The signature is confusing.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D97915

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

Reply via email to