MaskRay added a comment.

In D73307#1942838 <https://reviews.llvm.org/D73307#1942838>, @tmsriram wrote:

> In D73307#1942805 <https://reviews.llvm.org/D73307#1942805>, @MaskRay wrote:
>
> > In D73307#1932131 <https://reviews.llvm.org/D73307#1932131>, @rnk wrote:
> >
> > > At a higher level, should this just be an IR pass that clang adds into 
> > > the pipeline when the flag is set? It should be safe to rename internal 
> > > functions and give private functions internal linkage. It would be less 
> > > invasive to clang and have better separation of concerns. As written, 
> > > this is based on the source filename on the module, which is accessible 
> > > from IR. The only reason I can think of against this is that the debug 
> > > info might refer to the function linkage name, but maybe that is 
> > > calculated later during codegen.
> >
> >
> > I second this suggestion. `clang/lib/CodeGen/BackendUtil.cpp` 
> > `EmitAssemblyHelper::EmitAssemblyWithNewPassManager` ModulePassManager may 
> > be a more appropriate place for this feature. There are examples from both 
> > sides:
>
>
> @rnk getMangledNameImpl for example adds multi-versioning suffixes,  
> "__regcall3_" and  "__device_stub".  Adding the hash is just so simple.  Is a 
> pass really needed?  If so, I should parse ".<target>" suffixed 
> Multi-versioining names and insert the hash in between as the demangling 
> looks better?
>
> > 
> > 
> > - clang frontend: `#pragma redefine_extname`
> > - middle end IR->IR: the old pass manager has a feature -frewrite-map-file, 
> > which does a similar thing but is implemented as an IR transformation.


There may be some other interactions @rnk noticed. I am happy with either way.



================
Comment at: clang/test/CodeGen/unique-internal-linkage-names.cpp:5
+// RUN: %clang_cc1 -triple x86_64 -x c++ -S -emit-llvm 
-funique-internal-linkage-names -o - < %s | FileCheck %s --check-prefix=UNIQUE
+
+static int glob;
----------------
Might be worth adding a few other internal linkage names.

* an object in an unnamed namespace
* an extern "C" static function
* a function-local static variable
* `label: &&label`

Hope @mtrofin and @davidxl can clarify what internal names may benefit AFDO and 
we can add such internal names specifically.


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

https://reviews.llvm.org/D73307



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

Reply via email to