[PATCH] D48680: Add missing visibility annotation for __base

Louis Dionne via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue May 28 13:23:25 PDT 2019


ldionne added a comment.

More specifically, the following program always causes the vtable for `__base<int(float)>` to be internal:

  cat <<EOF | clang++ -xc++ - -std=c++11 && nm --demangle a.out
  #include <functional>
  
  int go(float) { return 0; }
  std::function<int(float)> foo() { return go; }
  
  int main() { foo()(3.3f); }
  EOF

That's true with or without this patch, and with or without `-fvisibility=hidden`. We always get:

  ...
                   U vtable for __cxxabiv1::__si_class_type_info
  0000000100003178 s vtable for std::__1::__function::__base<int (float)>
  00000001000030f0 s vtable for std::__1::__function::__func<int (*)(float), std::__1::allocator<int (*)(float)>, int (float)>
  0000000100003218 s vtable for std::__1::bad_function_call
  ...


Repository:
  rCXX libc++

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

https://reviews.llvm.org/D48680





More information about the cfe-commits mailing list