yaxunl added inline comments.

================
Comment at: clang/lib/CodeGen/CodeGenModule.cpp:4290-4293
-  // Do not set COMDAT attribute for CUDA/HIP stub functions to prevent
-  // them being "merged" by the COMDAT Folding linker optimization.
-  if (D.hasAttr<CUDAGlobalAttr>())
-    return false;
----------------
rnk wrote:
> rnk wrote:
> > tra wrote:
> > > This was added in D63277 specifically to deal with comdat-related issue 
> > > on windows. 
> > > 
> > > We do need to have unique addresses for each kernel stub. Placing stubs 
> > > into comdat may allow them to be merged into one and that would be a 
> > > problem.
> > > https://docs.microsoft.com/en-us/cpp/build/reference/opt-optimizations?view=vs-2019
> > >  
> > > 
> > > @rnk,@kpyzhov -- how do we make sure that identical functions are placed 
> > > in comdat (needed for templates) but do not get comdat-folded with 
> > > `/OPT:ICF`? 
> > > 
> > These are readonly global variables. I believe MSVC's ICF implementation 
> > changed behavior here a few times over the years. I think the current state 
> > is that they don't merge such globals. If you are using LLD, you can use 
> > safe ICF to avoid merging such globals.
> > 
> > @zequanwu reviewed the state of ICF in LLD in the last year, so he may know 
> > more about the current status, and he may be more helpful if you have more 
> > questions.
> > 
> > Finally, you could mark these globals as mutable if you really want to 
> > block ICF. That will work reliably with any linker.
> Broadly, I think this change is correct. If I had reviewed D63277, I probably 
> would have objected to it and not approved it.
These symbols are for kernel stub functions. How do I mark them as mutable? 


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

https://reviews.llvm.org/D112492

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

Reply via email to