summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CGRTTI.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* When building a type info struct for EH, we always want it to have ↵Anders Carlsson2011-01-241-0/+6
| | | | | | linkonce_odr linkage. llvm-svn: 124096
* Change CodeGenModule::getVTableLinkage to be a non-static member function.Anders Carlsson2011-01-241-3/+4
| | | | llvm-svn: 124095
* Mark VTables and RTTI data linkonce_odr instead of weak_odr, with the ↵Anders Carlsson2011-01-241-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 Espindola2011-01-111-4/+2
| | | | llvm-svn: 123293
* Set unnamed_addr for type infos that we are confortable marking as hidden. IRafael Espindola2011-01-111-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 beingChris Lattner2010-12-251-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 hackyJohn McCall2010-12-171-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 Carlsson2010-11-041-18/+16
| | | | llvm-svn: 118238
* Rename getBaseClassOffset to getBaseClassOffsetInBits and introduce a ↵Anders Carlsson2010-10-311-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 variablesJohn McCall2010-10-301-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 toJohn McCall2010-10-221-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 Kramer2010-10-221-6/+8
| | | | llvm-svn: 117106
* Make sure the VTables for template instantiations are emitted even if the ↵Argyrios Kyrtzidis2010-10-111-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 Kyrtzidis2010-10-111-1/+1
| | | | | | | | conflicts with similarly named classes in anonymous namespaces. llvm-svn: 116185
* Petty optimization.John McCall2010-09-041-1/+1
| | | | llvm-svn: 113049
* Teach IR generation to return 'this' from constructors and destructorsJohn McCall2010-08-311-3/+4
| | | | | | under the ARM ABI. llvm-svn: 112588
* Detabify.Eli Friedman2010-08-221-1/+1
| | | | llvm-svn: 111768
* Explicitly handle every case in the switch in RTTIBuilder::BuildTypeInfo.Eli Friedman2010-08-151-2/+15
| | | | llvm-svn: 111085
* Just disable the hidden-visibility optimization for now by hiding it behindJohn McCall2010-08-121-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 McCall2010-08-121-16/+73
| | | | llvm-svn: 110900
* Work in progress for PR7864. Someone more familiar with ObjC++ needs to fillEli Friedman2010-08-111-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 McCall2010-08-041-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 Kyrtzidis2010-07-071-1/+1
| | | | llvm-svn: 107773
* When building RTTI descriptors for pointer types, we need to get the ↵Anders Carlsson2010-06-021-6/+14
| | | | | | unqualified array type and the qualifiers from it. llvm-svn: 105326
* Fix -fno-rtti -fexceptions by forcing the emission of (non-"builtin") RTTIJohn McCall2010-04-301-7/+19
| | | | | | when used by the exceptions routines. Fixes PR 6974. llvm-svn: 102684
* Vtable -> VTable renames across the board.Anders Carlsson2010-04-171-20/+20
| | | | llvm-svn: 101666
* Eliminate excessive PCH deserialization caused by the search forDouglas Gregor2010-04-081-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 usingDouglas Gregor2010-03-311-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, produceRafael Espindola2010-03-271-6/+63
| | | | | | | | the typeinfo for the fundamental types. Fixes PR6685. llvm-svn: 99701
* Rename CGVtableInfo to CodeGenVTables in preparation of adding another ↵Anders Carlsson2010-03-231-1/+1
| | | | | | VTableInfo class. llvm-svn: 99250
* Rename getVirtualBaseOffsetIndex to getVirtualBaseOffsetOffset to reflect ↵Anders Carlsson2010-03-111-1/+1
| | | | | | what it actually does. llvm-svn: 98248
* Extract a common structure for holding information about the definitionJohn McCall2010-02-041-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 theDouglas Gregor2010-01-061-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 Carlsson2010-01-021-3/+2
| | | | llvm-svn: 92421
* If the key function of a record is inline, then the RTTI data should have ↵Anders Carlsson2009-12-311-0/+8
| | | | | | weak_odr linkage. llvm-svn: 92371
* More RTTI builder cleanup.Anders Carlsson2009-12-311-76/+26
| | | | llvm-svn: 92360
* Fix a bunch of bugs with VMI RTTI building, and add a whole bunch of tests.Anders Carlsson2009-12-301-213/+188
| | | | llvm-svn: 92319
* More RTTI cleanup, test that RTTI classes have the correct vtables.Anders Carlsson2009-12-301-52/+57
| | | | llvm-svn: 92284
* Match gcc and treat vector types as fundamental types.Anders Carlsson2009-12-291-9/+23
| | | | llvm-svn: 92278
* Handle enum types as well.Anders Carlsson2009-12-291-3/+22
| | | | llvm-svn: 92276
* Test linkage of RTTI descriptors of array types.Anders Carlsson2009-12-291-29/+61
| | | | llvm-svn: 92274
* Fix function type RTTI linkage and add tests.Anders Carlsson2009-12-291-4/+14
| | | | llvm-svn: 92266
* Don't set hidden for a non-external symbol as that would make it extenal.Mike Stump2009-12-241-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 Stump2009-12-241-0/+20
| | | | llvm-svn: 92109
* Fix regression found by g++.dg/eh/alias1.C.Mike Stump2009-12-231-0/+4
| | | | llvm-svn: 92072
* Incomplete structs should also have internal linkage.Anders Carlsson2009-12-211-9/+76
| | | | llvm-svn: 91805
* Correcly handle pointers to member pointer types where the class or the ↵Anders Carlsson2009-12-201-42/+48
| | | | | | pointee is incomplete. llvm-svn: 91804
* Rework the way pointer types are handled by the RTTI builder. We now get the ↵Anders Carlsson2009-12-201-101/+354
| | | | | | right linkage for indirect pointers to incomplete structs. llvm-svn: 91799
* Remove ';' after method definition. Noticed by clang++, which one would thinkDaniel Dunbar2009-12-191-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 Carlsson2009-12-171-34/+26
| | | | | | takes a CXXRecordDecl since we were just creating a QualType from it anyway. llvm-svn: 91590
OpenPOWER on IntegriCloud