jdoerfert marked 7 inline comments as done.
jdoerfert added inline comments.


================
Comment at: clang/lib/CodeGen/CGDecl.cpp:2618
+void CodeGenModule::EmitOMPAllocateDecl(const OMPAllocateDecl *D) {
+  for (Expr *E : const_cast<OMPAllocateDecl *>(D)->varlists()) {
+    auto *DE = cast<DeclRefExpr>(E);
----------------
jdoerfert wrote:
> ABataev wrote:
> > jdoerfert wrote:
> > > ABataev wrote:
> > > > jdoerfert wrote:
> > > > > ABataev wrote:
> > > > > > jdoerfert wrote:
> > > > > > > ABataev wrote:
> > > > > > > > Why need to remove constantness here?
> > > > > > > The problem is that the declaration, which might have been 
> > > > > > > already generated in IR or not, had no address space attached 
> > > > > > > before. Now we want to do that after the fact, potentially *way 
> > > > > > > later*. To reuse the general codegen mechanism I modify the 
> > > > > > > VarDecl (temporarily) by attaching the new address space and 
> > > > > > > calling codegen again. If you have a better idea, I'm happy to 
> > > > > > > change this.
> > > > > > Why not just create it manually rather than rely on 
> > > > > > `GetOrCreateLLVMGlobal`?
> > > > > I'm not sure I follow. Creating a global is complicated, need to make 
> > > > > sure all the linkage, visibility, address space stuff is set up, 
> > > > > mangling, etc. Why would we duplicate all that code and risk messing 
> > > > > things up now or in the future?
> > > > And what about just setting the address-space on the LLVM type directly?
> > > It's part of the type, we can't change it after the fact (at least that 
> > > is not an existing API). 
> > What about `Value::mutateType`?
> I'll give it a shot, though the comment makes me nervous:
> 
> ```
>     /// Mutate the type of this Value to be of the specified type.            
>                                                                               
>                                                                               
>                      
>     ///
>     /// Note that this is an extremely dangerous operation which can create
>     /// completely invalid IR very easily.  It is strongly recommended that 
> you
>     /// recreate IR objects with the right types instead of mutating them in
>     /// place.
> ```
> 
> 
Seems to work with the mutate API. Let's try it out ;)


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D101030

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

Reply via email to