[PATCH] D73307: Unique Names for Functions with Internal Linkage

Sriraman Tallam via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Mar 30 18:35:47 PDT 2020


tmsriram marked an inline comment as done.
tmsriram added inline comments.


================
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;
----------------
wmi wrote:
> MaskRay wrote:
> > 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.
> Only internal functions matter for AFDO. Other types of internal names are irrelevant.
extern "C" static is not very useful as the name is not exposed outside the object file.  C++ compiler will still mangle the name. for eg:

a.cpp

extern "C" {
  static int bar() {
    return 0;
  }
}

int foo() {
  printf("%p\n", bar);
}

$ nm a.o 
0000000000000040 t _ZL3barv


Also, for label: &&label, it is not preserved in the symbol table as a .L<name> is used which is deleted by the assembler.  I can throw a asm("") directive but that will bypass the front-end.  Is there anyway to preserve this?  

I can add the rest of the cases.




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

https://reviews.llvm.org/D73307





More information about the cfe-commits mailing list