Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | When building a type info struct for EH, we always want it to have ↵ | Anders Carlsson | 2011-01-24 | 1 | -0/+6 | |
| | | | | | | linkonce_odr linkage. llvm-svn: 124096 | |||||
* | Change CodeGenModule::getVTableLinkage to be a non-static member function. | Anders Carlsson | 2011-01-24 | 1 | -3/+4 | |
| | | | | llvm-svn: 124095 | |||||
* | Mark VTables and RTTI data linkonce_odr instead of weak_odr, with the ↵ | Anders Carlsson | 2011-01-24 | 1 | -3/+3 | |
| | | | | | | | | exception of explicit template instantiations, which have to be weak_odr. This fixes PR6996. llvm-svn: 124089 | |||||
* | Set unnamed_addr in every type info. | Rafael Espindola | 2011-01-11 | 1 | -4/+2 | |
| | | | | llvm-svn: 123293 | |||||
* | Set unnamed_addr for type infos that we are confortable marking as hidden. I | Rafael Espindola | 2011-01-11 | 1 | -1/+5 | |
| | | | | | | think it is safe to mark all type infos with unnamed_addr, but I am not sure. llvm-svn: 123275 | |||||
* | The -fshort-wchar option causes wchar_t to become unsigned, in addition to being | Chris Lattner | 2010-12-25 | 1 | -1/+2 | |
| | | | | | | | 16-bits in size. Implement this by splitting WChar into two enums, like we have for char. This fixes a miscompmilation of XULRunner, PR8856. llvm-svn: 122558 | |||||
* | Give hidden visibility to RTTI for derived types. This is kindof a hacky | John McCall | 2010-12-17 | 1 | -3/+5 | |
| | | | | | | way to do this, but it fixes rdar://problem/8778973 llvm-svn: 122033 | |||||
* | std::nullptr_t is a fundamental type for RTTI purposes. | Anders Carlsson | 2010-11-04 | 1 | -18/+16 | |
| | | | | llvm-svn: 118238 | |||||
* | Rename getBaseClassOffset to getBaseClassOffsetInBits and introduce a ↵ | Anders Carlsson | 2010-10-31 | 1 | -1/+1 | |
| | | | | | | getBaseClassOffset which returns the offset in CharUnits. Do the same thing for getVBaseClassOffset. llvm-svn: 117881 | |||||
* | Better solution: calculate the visibility of functions and variables | John McCall | 2010-10-30 | 1 | -1/+1 | |
| | | | | | | | | | | independently of whether they're definitions, then teach IR generation to ignore non-explicit visibility when emitting declarations. Use this to make sure that RTTI, vtables, and VTTs get the right visibility. More of rdar://problem/8613093 llvm-svn: 117781 | |||||
* | Substantially revise how clang computes the visibility of a declaration to | John McCall | 2010-10-22 | 1 | -1/+1 | |
| | | | | | | | | more closely parallel the computation of linkage. This gets us to a state much closer to what gcc emits, modulo bugs, which will undoubtedly arise in abundance. llvm-svn: 117147 | |||||
* | More class anonymization. | Benjamin Kramer | 2010-10-22 | 1 | -6/+8 | |
| | | | | llvm-svn: 117106 | |||||
* | Make sure the VTables for template instantiations are emitted even if the ↵ | Argyrios Kyrtzidis | 2010-10-11 | 1 | -11/+5 | |
| | | | | | | key function doesn't have a body. llvm-svn: 116186 | |||||
* | Don't let typeinfo name symbols be 'internal hidden', it can lead to linker ↵ | Argyrios Kyrtzidis | 2010-10-11 | 1 | -1/+1 | |
| | | | | | | | | conflicts with similarly named classes in anonymous namespaces. llvm-svn: 116185 | |||||
* | Petty optimization. | John McCall | 2010-09-04 | 1 | -1/+1 | |
| | | | | llvm-svn: 113049 | |||||
* | Teach IR generation to return 'this' from constructors and destructors | John McCall | 2010-08-31 | 1 | -3/+4 | |
| | | | | | | under the ARM ABI. llvm-svn: 112588 | |||||
* | Detabify. | Eli Friedman | 2010-08-22 | 1 | -1/+1 | |
| | | | | llvm-svn: 111768 | |||||
* | Explicitly handle every case in the switch in RTTIBuilder::BuildTypeInfo. | Eli Friedman | 2010-08-15 | 1 | -2/+15 | |
| | | | | llvm-svn: 111085 | |||||
* | Just disable the hidden-visibility optimization for now by hiding it behind | John McCall | 2010-08-12 | 1 | -3/+8 | |
| | | | | | | | | 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. llvm-svn: 110979 | |||||
* | Implement RTTI generation for Objective C types. Fixes PR7864. | John McCall | 2010-08-12 | 1 | -16/+73 | |
| | | | | llvm-svn: 110900 | |||||
* | Work in progress for PR7864. Someone more familiar with ObjC++ needs to fill | Eli Friedman | 2010-08-11 | 1 | -3/+24 | |
| | | | | | | in the code after the "FIXME: Needs to be written". llvm-svn: 110849 | |||||
* | Emit standard-library RTTI with external linkage, not weak_odr. | John McCall | 2010-08-04 | 1 | -12/+33 | |
| | | | | | | | | | | 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. llvm-svn: 110192 | |||||
* | getBody() -> hasBody() | Argyrios Kyrtzidis | 2010-07-07 | 1 | -1/+1 | |
| | | | | llvm-svn: 107773 | |||||
* | When building RTTI descriptors for pointer types, we need to get the ↵ | Anders Carlsson | 2010-06-02 | 1 | -6/+14 | |
| | | | | | | unqualified array type and the qualifiers from it. llvm-svn: 105326 | |||||
* | Fix -fno-rtti -fexceptions by forcing the emission of (non-"builtin") RTTI | John McCall | 2010-04-30 | 1 | -7/+19 | |
| | | | | | | when used by the exceptions routines. Fixes PR 6974. llvm-svn: 102684 | |||||
* | Vtable -> VTable renames across the board. | Anders Carlsson | 2010-04-17 | 1 | -20/+20 | |
| | | | | llvm-svn: 101666 | |||||
* | Eliminate excessive PCH deserialization caused by the search for | Douglas Gregor | 2010-04-08 | 1 | -35/+0 | |
| | | | | | | | | | | | | | | | | | | | | | | __cxxabiv1::__fundamental_type_info in every translation unit. Previously, we would perform name lookup for __cxxabiv1::__fundamental_type_info at the end of IRGen for a each translation unit, to determine whether it was present. If so, we we produce type information for all of the fundamental types. However, this name lookup causes PCH deserialization of a significant part of the translation unit, which has a woeful impact on performance. With this change, we now look at each record type after we've generated its vtable to see if it is __cxxabiv1::__fundamental_type_info. If so, we generate type info for all of the fundamental types. This works because __cxxabiv1::__fundamental_type_info should always have a key function (typically the virtual destructor), that will be defined once in the support library. The fundamental type information will end up there. Fixes <rdar://problem/7840011>. llvm-svn: 100772 | |||||
* | Drastically simplify the computation of linkage for typeinfo by using | Douglas Gregor | 2010-03-31 | 1 | -75/+12 | |
| | | | | | | | | the existing (and already well-tested) linkage computation for types, with minor tweaks for dynamic classes and (pointers to) incomplete types. Fixes PR6597. llvm-svn: 99968 | |||||
* | When given the magic class __cxxabiv1::__fundamental_type_info, produce | Rafael Espindola | 2010-03-27 | 1 | -6/+63 | |
| | | | | | | | | the typeinfo for the fundamental types. Fixes PR6685. llvm-svn: 99701 | |||||
* | Rename CGVtableInfo to CodeGenVTables in preparation of adding another ↵ | Anders Carlsson | 2010-03-23 | 1 | -1/+1 | |
| | | | | | | VTableInfo class. llvm-svn: 99250 | |||||
* | Rename getVirtualBaseOffsetIndex to getVirtualBaseOffsetOffset to reflect ↵ | Anders Carlsson | 2010-03-11 | 1 | -1/+1 | |
| | | | | | | what it actually does. llvm-svn: 98248 | |||||
* | Extract a common structure for holding information about the definition | John McCall | 2010-02-04 | 1 | -2/+5 | |
| | | | | | | | | of a C++ record. Exposed a lot of problems where various routines were silently doing The Wrong Thing (or The Acceptable Thing in The Wrong Order) when presented with a non-definition. Also cuts down on memory usage. llvm-svn: 95330 | |||||
* | Fix linkage for RTTI names by re-using the logic for computing the | Douglas Gregor | 2010-01-06 | 1 | -18/+3 | |
| | | | | | | | | linkage of vtables. Before this, we were emitting RTTI names for template instantiations with strong external linkage rather than with weak ODR linkage. llvm-svn: 92857 | |||||
* | Speculative MSVC fix. | Anders Carlsson | 2010-01-02 | 1 | -3/+2 | |
| | | | | llvm-svn: 92421 | |||||
* | If the key function of a record is inline, then the RTTI data should have ↵ | Anders Carlsson | 2009-12-31 | 1 | -0/+8 | |
| | | | | | | weak_odr linkage. llvm-svn: 92371 | |||||
* | More RTTI builder cleanup. | Anders Carlsson | 2009-12-31 | 1 | -76/+26 | |
| | | | | llvm-svn: 92360 | |||||
* | Fix a bunch of bugs with VMI RTTI building, and add a whole bunch of tests. | Anders Carlsson | 2009-12-30 | 1 | -213/+188 | |
| | | | | llvm-svn: 92319 | |||||
* | More RTTI cleanup, test that RTTI classes have the correct vtables. | Anders Carlsson | 2009-12-30 | 1 | -52/+57 | |
| | | | | llvm-svn: 92284 | |||||
* | Match gcc and treat vector types as fundamental types. | Anders Carlsson | 2009-12-29 | 1 | -9/+23 | |
| | | | | llvm-svn: 92278 | |||||
* | Handle enum types as well. | Anders Carlsson | 2009-12-29 | 1 | -3/+22 | |
| | | | | llvm-svn: 92276 | |||||
* | Test linkage of RTTI descriptors of array types. | Anders Carlsson | 2009-12-29 | 1 | -29/+61 | |
| | | | | llvm-svn: 92274 | |||||
* | Fix function type RTTI linkage and add tests. | Anders Carlsson | 2009-12-29 | 1 | -4/+14 | |
| | | | | llvm-svn: 92266 | |||||
* | Don't set hidden for a non-external symbol as that would make it extenal. | Mike Stump | 2009-12-24 | 1 | -1/+29 | |
| | | | | | | Refine codegen for visibility and hidden. WIP. llvm-svn: 92118 | |||||
* | Fix recent regression caught by g++.old-deja/g++.mike/eh19.C. | Mike Stump | 2009-12-24 | 1 | -0/+20 | |
| | | | | llvm-svn: 92109 | |||||
* | Fix regression found by g++.dg/eh/alias1.C. | Mike Stump | 2009-12-23 | 1 | -0/+4 | |
| | | | | llvm-svn: 92072 | |||||
* | Incomplete structs should also have internal linkage. | Anders Carlsson | 2009-12-21 | 1 | -9/+76 | |
| | | | | llvm-svn: 91805 | |||||
* | Correcly handle pointers to member pointer types where the class or the ↵ | Anders Carlsson | 2009-12-20 | 1 | -42/+48 | |
| | | | | | | pointee is incomplete. llvm-svn: 91804 | |||||
* | Rework the way pointer types are handled by the RTTI builder. We now get the ↵ | Anders Carlsson | 2009-12-20 | 1 | -101/+354 | |
| | | | | | | right linkage for indirect pointers to incomplete structs. llvm-svn: 91799 | |||||
* | Remove ';' after method definition. Noticed by clang++, which one would think | Daniel Dunbar | 2009-12-19 | 1 | -1/+1 | |
| | | | | | | | would have a higher respect for its own code. This is getting old, is this warning really adding value? llvm-svn: 91779 | |||||
* | Rename GetAddrOfRTTI to GetAddrOfRTTIDescriptor. Remove the overload that ↵ | Anders Carlsson | 2009-12-17 | 1 | -34/+26 | |
| | | | | | | takes a CXXRecordDecl since we were just creating a QualType from it anyway. llvm-svn: 91590 |