History log of /external/clang/test/CodeGenCXX/rtti-linkage.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
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