907c828b080332854826a87451e838930f4be788 |
|
29-Jan-2011 |
Anders Carlsson <andersca@mac.com> |
When emitting RTTI for a non-class type, compute the visibility of the RTTI data based on the explicit visibility of the type. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124553 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/rtti-linkage.cpp
|
6329e20058cb7a4ecbbafed3aa61437b9683eb08 |
|
29-Jan-2011 |
Anders Carlsson <andersca@mac.com> |
Update tests. I'm still not sure if having the typenames be visible with -hidden-weak-vtables, but I think it makes sense. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124549 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/rtti-linkage.cpp
|
f502d93b0ea970bfbd897e657f8d940a20984de2 |
|
24-Jan-2011 |
Anders Carlsson <andersca@mac.com> |
Mark VTables and RTTI data linkonce_odr instead of weak_odr, with the exception of explicit template instantiations, which have to be weak_odr. This fixes PR6996. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124089 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/rtti-linkage.cpp
|
57244f69e2e780bb5584a37a12e31be83b1eaadb |
|
12-Jan-2011 |
Rafael Espindola <rafael.espindola@gmail.com> |
Set unnamed_addr in every type info. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123293 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/rtti-linkage.cpp
|
b1c65ff108de47a89585ad37874bd6cb232664cd |
|
11-Jan-2011 |
Rafael Espindola <rafael.espindola@gmail.com> |
Set unnamed_addr for type infos that we are confortable marking as hidden. I think it is safe to mark all type infos with unnamed_addr, but I am not sure. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123275 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/rtti-linkage.cpp
|
9c39acfda88268bcc7fb5521b55ce41942dcb3b0 |
|
17-Dec-2010 |
John McCall <rjmccall@apple.com> |
Give hidden visibility to RTTI for derived types. This is kindof a hacky way to do this, but it fixes rdar://problem/8778973 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122033 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/rtti-linkage.cpp
|
fd4524b4452d5dcda9c7cb9b1b665fd0f4b6267e |
|
08-Nov-2010 |
NAKAMURA Takumi <geek4civic@gmail.com> |
test/CodeGenCXX/rtti-linkage.cpp: Get rid of sort(1) to remove XFAIL: win32. On the certain system, bogus SORT.EXE is picked up. Its sort-order is incompatible to POSIX. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118391 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/rtti-linkage.cpp
|
6d576051b9ca56fe962077fb194ed2917539989a |
|
11-Oct-2010 |
Argyrios Kyrtzidis <akyrtzi@gmail.com> |
Don't let typeinfo name symbols be 'internal hidden', it can lead to linker conflicts with similarly named classes in anonymous namespaces. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116185 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/rtti-linkage.cpp
|
279b5eb6910d64a293e9c0e2887a05c65d8737d7 |
|
13-Aug-2010 |
John McCall <rjmccall@apple.com> |
Just disable the hidden-visibility optimization for now by hiding it behind a -cc1 option. The Darwin linker complains about mixed visibility when linking gcc-built objects with clang-built objects, and the optimization isn't really that valuable. Platforms with less ornery linkers can feel free to enable this. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110979 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/rtti-linkage.cpp
|
7a536907da776bdc47a704e7cafd641e8150e653 |
|
05-Aug-2010 |
John McCall <rjmccall@apple.com> |
It turns out that linkers (at least, the Darwin linker) don't necessarily do the right thing with mixed-visibility symbols, so disable the visibility optimization where that's possible, i.e. with template classes (since it's possible that an arbitrary template might be subject to an explicit instantiation elsewhere). 447.dealII actually does this. I've put the code under an option that's currently not hooked up to anything. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110374 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/rtti-linkage.cpp
|
cbfe50224b19119e759802bd0c1463269dffd09e |
|
04-Aug-2010 |
John McCall <rjmccall@apple.com> |
Emit standard-library RTTI with external linkage, not weak_odr. Apply hidden visibility to most RTTI; libstdc++ does not rely on exact pointer equality for the type info (just the type info names). Apply the same optimization to RTTI that we do to vtables. Fixes PR5962. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110192 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/rtti-linkage.cpp
|
d1c1d7bd14dce533e8755164ff59988f2ea5da94 |
|
02-Jun-2010 |
Douglas Gregor <dgregor@apple.com> |
typeid() produces type information for the cv-unqualified version of the type. Thanks to Anders for the bug report! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105314 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/rtti-linkage.cpp
|
ecb2df2408639e554def61080ce3afdb41e2f705 |
|
14-May-2010 |
Daniel Dunbar <daniel@zuster.org> |
XFAIL a test on Win32. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103762 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/rtti-linkage.cpp
|
6fb745bdf1ff1e32caf07e42093a7920726892c1 |
|
13-May-2010 |
Douglas Gregor <dgregor@apple.com> |
Rework when and how vtables are emitted, by tracking where vtables are "used" (e.g., we will refer to the vtable in the generated code) and when they are defined (i.e., because we've seen the key function definition). Previously, we were effectively tracking "potential definitions" rather than uses, so we were a bit too eager about emitting vtables for classes without key functions. The new scheme: - For every use of a vtable, Sema calls MarkVTableUsed() to indicate the use. For example, this occurs when calling a virtual member function of the class, defining a constructor of that class type, dynamic_cast'ing from that type to a derived class, casting to/through a virtual base class, etc. - For every definition of a vtable, Sema calls MarkVTableUsed() to indicate the definition. This happens at the end of the translation unit for classes whose key function has been defined (so we can delay computation of the key function; see PR6564), and will also occur with explicit template instantiation definitions. - For every vtable defined/used, we mark all of the virtual member functions of that vtable as defined/used, unless we know that the key function is in another translation unit. This instantiates virtual member functions when needed. - At the end of the translation unit, Sema tells CodeGen (via the ASTConsumer) which vtables must be defined (CodeGen will define them) and which may be used (for which CodeGen will define the vtables lazily). From a language perspective, both the old and the new schemes are permissible: we're allowed to instantiate virtual member functions whenever we want per the standard. However, all other C++ compilers were more lazy than we were, and our eagerness was both a performance issue (we instantiated too much) and a portability problem (we broke Boost test cases, which now pass). Notes: (1) There's a ton of churn in the tests, because the order in which vtables get emitted to IR has changed. I've tried to isolate some of the larger tests from these issues. (2) Some diagnostics related to implicitly-instantiated/implicitly-defined virtual member functions have moved to the point of first use/definition. It's better this way. (3) I could use a review of the places where we MarkVTableUsed, to see if I missed any place where the language effectively requires a vtable. Fixes PR7114 and PR6564. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103718 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/rtti-linkage.cpp
|
031b37140d0864c741618960b5220245a2a086ae |
|
31-Mar-2010 |
Douglas Gregor <dgregor@apple.com> |
Drastically simplify the computation of linkage for typeinfo by using the existing (and already well-tested) linkage computation for types, with minor tweaks for dynamic classes and (pointers to) incomplete types. Fixes PR6597. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99968 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/rtti-linkage.cpp
|
e8f90389c43efbbe820574f674a98ac701bf48a2 |
|
31-Dec-2009 |
Anders Carlsson <andersca@mac.com> |
If the key function of a record is inline, then the RTTI data should have weak_odr linkage. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92371 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/rtti-linkage.cpp
|
f64531a17037faa9e0119e90961d2db77d06865d |
|
30-Dec-2009 |
Anders Carlsson <andersca@mac.com> |
More RTTI cleanup, test that RTTI classes have the correct vtables. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92284 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/rtti-linkage.cpp
|
9c7b6bb952672b9d184a4426138579d55c370afc |
|
29-Dec-2009 |
Anders Carlsson <andersca@mac.com> |
Handle enum types as well. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92276 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/rtti-linkage.cpp
|
09b6e6e8854cc4a824060101a9633082e55d7a33 |
|
29-Dec-2009 |
Anders Carlsson <andersca@mac.com> |
Fix function type RTTI linkage and add tests. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92266 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/rtti-linkage.cpp
|
f57f207a0fcf5fb7883597b57dd03faf952318dd |
|
23-Dec-2009 |
Douglas Gregor <dgregor@apple.com> |
Remove cv-qualifiers from the argument to typeid git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92041 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/rtti-linkage.cpp
|
610b0d94d71810773378be4f39922a56b1202a83 |
|
21-Dec-2009 |
Anders Carlsson <andersca@mac.com> |
Add tests for structs inside anonymous namespaces. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91806 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/rtti-linkage.cpp
|
625c1ae781e3b8973bc9ec520268fe3301e4caf5 |
|
21-Dec-2009 |
Anders Carlsson <andersca@mac.com> |
Incomplete structs should also have internal linkage. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91805 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/rtti-linkage.cpp
|
17fa6f971c1912c77aa10bdac4b7991b5e1646e2 |
|
21-Dec-2009 |
Anders Carlsson <andersca@mac.com> |
Correcly handle pointers to member pointer types where the class or the pointee is incomplete. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91804 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/rtti-linkage.cpp
|
8d1451535524cb21a6f8347bad9fed371b9d9ecb |
|
20-Dec-2009 |
Anders Carlsson <andersca@mac.com> |
Rework the way pointer types are handled by the RTTI builder. We now get the right linkage for indirect pointers to incomplete structs. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91799 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/rtti-linkage.cpp
|
a5728872c7702ddd09537c95bc3cbd20e1f2fb09 |
|
15-Dec-2009 |
Daniel Dunbar <daniel@zuster.org> |
Update tests to use %clang_cc1 instead of 'clang-cc' or 'clang -cc1'. - This is designed to make it obvious that %clang_cc1 is a "test variable" which is substituted. It is '%clang_cc1' instead of '%clang -cc1' because it can be useful to redefine what gets run as 'clang -cc1' (for example, to set a default target). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91446 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/rtti-linkage.cpp
|
4e7135613a558020f003972b2a5ae5f8d5306508 |
|
11-Dec-2009 |
Anders Carlsson <andersca@mac.com> |
Use GetAddrOfRTTI when getting the RTTI pointer for a base class. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91127 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/rtti-linkage.cpp
|