hsmhsm added inline comments.
================ Comment at: clang/lib/CodeGen/CGExpr.cpp:103 + if (!ArraySize) { + auto *EBB = AllocaInsertPt->getParent(); + auto Iter = AllocaInsertPt->getIterator(); ---------------- rnk wrote: > hsmhsm wrote: > > jdoerfert wrote: > > > arsenm wrote: > > > > Why is there a special AllocaInsertPt iterator in the first place? Can > > > > you avoid any iteration logic by just always inserting at the block > > > > start? > > > Right. The alloca insertion point is sometimes changed to a non-entry > > > block, and we should keep that ability. > > > From all the use cases I know it would suffice to insert at the beginning > > > of the alloca insertion point block though. > > I really do not understand this comment fully. > > > > This block of code here inserts an "addressspace cast" of recently inserted > > alloca, not the alloca itself. Alloca is already inserted. Please look at > > the start of this function. > > > > The old logic (in the left) inserts addressspace cast of recently inserted > > alloca immediately after recent alloca using AllocaInsertPt. As a side > > effect, it also makes AllocaInsertPt now point to this newly inserted > > addressspace cast. Hence, next alloca is inserted after this new > > addressspace cast, because now AllocaInsertPt is made to point this newly > > inserted addressspace cast. > > > > The new logic (here) fixes that by moving insertion point just beyond > > current AllocaInsertPt without updating AllocaInsertPt. > > > > How can I insert "addressspace cast" of an alloca, at the beginning of the > > block even before alloca? > > > > As I understand it, AllocaInsertPt is maintained to insert static allocas > > at the start of entry block, otherwise there is no any special reason to > > maintain such a special insertion point. Please look at > > https://github.com/llvm/llvm-project/blob/main/clang/lib/CodeGen/CodeGenFunction.h#L378. > > > > That said, I am not really sure, if I have completely misunderstood the > > comment above. If that is the case, then, I need better clarification here > > about what really is expected. > Well, inserting at the top of the entry block would reverse the order of the > allocas. Currently they appear in source/IRGen order, which is nice. > Maintaining the order requires appending, which requires a cursor of some > kind. Yes, correct. And I am waiting for further inputs from @yaxunl / @arsenm / @jdoerfert Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D110257/new/ https://reviews.llvm.org/D110257 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits