yaxunl added inline comments.

================
Comment at: lib/CodeGen/CGBlocks.cpp:1318
+        CGM.getModule().getMDKindID("invariant.load"),
+        llvm::MDNode::get(getLLVMContext(), None));
+
----------------
rjmccall wrote:
> OpenCL blocks are still potentially function-local, right?  I don't think 
> you're allowed to put `invariant.load` on something that's visibly 
> initialized, even if it's visibly initialized to the same thing every time.  
> The problem is that `invariant.load` could allow the load to be hoisted above 
> the initialization.
> 
> If you can solve that problem, you can make this non-OpenCL-specific.
It seems that invariant.load implies the pointer is invariant in the whole 
module, disregarding the store to it, which is not suitable for this case.

In this case what I need is that after the first store to the pointer, every 
load does not change.

It seems invariant.group can be used for this.


https://reviews.llvm.org/D53295



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

Reply via email to