echristo added inline comments.

================
Comment at: lib/CodeGen/CodeGenAction.cpp:181-190
@@ -166,2 +180,12 @@
           return;
+        if (LangOpts.CUDA && LangOpts.CUDAIsDevice &&
+            LangOpts.CUDAUsesLibDevice) {
+          legacy::PassManager passes;
+          passes.add(createInternalizePass(ModuleFuncNames));
+          // Considering that most of the functions we've linked are
+          // not going to be used, we may want to eliminate them
+          // early.
+          passes.add(createGlobalDCEPass());
+          passes.run(*TheModule);
+        }
       }
----------------
tra wrote:
> echristo wrote:
> > Seems like this should be part of the normal IPO pass run? This seems like 
> > an odd place to put this, can you explain why a bit more?
> It will indeed happen during normal optimization, but as NVPTX docs says it 
> makes fair amount of sense to eliminate quite a bit of bitcode that we know 
> we're not going to need. libdevice carries ~450 functions and only handful of 
> those are needed. Why run all other optimization passes on them?
> 
> In addition to that, we need to pass to Internalize list of symbols to 
> preserve. As far as I can tell the way to do it within normal optimization 
> pipeline is to pass them to back-end via 
> -internalize-public-api-list/-internalize-public-api-file. That's not 
> particularly suitable way to carry potentially large list of symbols we will 
> find in the TU we're dealing with.
> 
> I could move GDCE to LLVM where it would arguably be somewhat more effective 
> if done after NVVMReflect, but keeping it next to internalize makes it easier 
> to see that we intentionally internalize and eliminate unused bitcode here.
I might not have been clear. I'm curious why all of this isn't just part of the 
normal IPO pass run that should be happening on the code anyhow? Taking a step 
back - this should just go through the normal "let's set up a pipeline for the 
code", which might end up being cuda specific, but should be handled in the 
same way.

That make sense?


http://reviews.llvm.org/D11664



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

Reply via email to