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



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

Reply via email to