fghanim requested changes to this revision.
fghanim added inline comments.
This revision now requires changes to proceed.


================
Comment at: llvm/include/llvm/Frontend/OpenMP/OMPIRBuilder.h:282
+  IRBuilder<> AllocaBuilder;
+
   /// Map to remember source location strings
----------------
jdoerfert wrote:
> fghanim wrote:
> > jdoerfert wrote:
> > > fghanim wrote:
> > > > What's the benefit of this over just maintaining an alloca insertion 
> > > > point?
> > > > 
> > > > With this we will have 3 `IRBuilder`s to maintain and keep track of: 
> > > > the clang (or flang) `IRBuilder`, the OMP `IRBuilder` and the 
> > > > `allocaBuilder`
> > > No functional difference. Basically the same reason why clang has an 
> > > AllocIRBuilder (I think), we can use it independently of the other one. 
> > > The alternative is to save the builder IP, set it to the alloca IP, do 
> > > alloca stuff, reset the builder IP, when you use the AllocaIRBuilder 
> > > below. Again, no functional difference, just less setting/resetting of 
> > > IPs.
> > I understand where you are coming from, and I understand that functionally 
> > there is mostly no change - for now. But I prefer we do a small struct with 
> > some RAII, over adding an entire builder. I think it's a bit overkill and 
> > will be a source to lots of trouble.
> > 
> > Clang maintains an instruction `AllocaInsertPt`, not a specific builder. 
> > Speaking of which, This is completely from memory (i.e. check to make 
> > sure); I think we already save the previous `AllocaInsertionPt` in clang as 
> > part of the `bodyGenCB`. In which case, this is not needed; a nested 
> > `parallel` will always be generated by clang as part of the `bodyGenCB`, 
> > which in turn is going to save the Alloca insertion point for us. 
> > To enable the creation of the allocas for `TID` and `ZeroAddr` in the outer 
> > function, Why not pass current `AllocaInsertionPt` as an arg. to 
> > `createParallel`
> > I understand where you are coming from, and I understand that functionally 
> > there is mostly no change - for now. But I prefer we do a small struct with 
> > some RAII, over adding an entire builder. I think it's a bit overkill and 
> > will be a source to lots of trouble.
> 
> Could you explain what kind of overkill you see here? And maybe also the lots 
> of trouble you expect from a builder versus a insertion point? It is the same 
> information, just packed in a different struct, right?
> 
> 
> > Clang maintains an instruction AllocaInsertPt, not a specific builder. 
> 
> Right.
> 
> 
> > Speaking of which, This is completely from memory (i.e. check to make 
> > sure); I think we already save the previous AllocaInsertionPt in clang as 
> > part of the bodyGenCB. 
> 
> I think so.
> 
> 
> > In which case, this is not needed; 
> 
> Not strictly, no. 
> 
> > a nested parallel will always be generated by clang as part of the 
> > bodyGenCB,
> 
> Yes.
> 
> > which in turn is going to save the Alloca insertion point for us.
> 
> Yes.
> 
> > To enable the creation of the allocas for TID and ZeroAddr in the outer 
> > function, Why not pass current AllocaInsertionPt as an arg. to 
> > createParallel
> 
> So far, because this will not be the only one that needs to create allocas. 
> If you want to add the allocaIP to all runtime calls that create allocas, I'm 
> fine with that too.
> Could you explain what kind of overkill you see here?
Using an IRBuilder when an insertion point suffices

> And maybe also the lots of trouble you expect from a builder versus a 
> insertion point?
Currently, when using the OMPBuilder you need to juggle two IRBuilders, let's 
not make them 3 :)

> It is the same information, just packed in a different struct, right?
no it is not. `InsetrionPoint` vs  struct that contains `Insertionpoint` + 
other things. But that's beside the point

I mean, is the `AllocaBuilder` providing a new functionality other than a 
convenient way to keep track of the Alloca `InsertionPoint`?
Personally, I prefer some suitable structure to your needs and a stack (i.e. 
the way clang does it) . This should also resolve the todo below. 
Alternatively, pass an allocation point as an argument as suggested earlier. I 
am open to any third way if you have any.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D82470



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

Reply via email to