Commit Graph

49 Commits

Author SHA1 Message Date
Chris Lattner ece0409a1a simplify a bunch of code to use the well-known LLVM IR types computed by CodeGenModule.
llvm-svn: 149943
2012-02-07 00:39:47 +00:00
Dylan Noblesmith 2c1dd2716a Basic: import SmallString<> into clang namespace
(I was going to fix the TODO about DenseMap too, but
that would break self-host right now. See PR11922.)

llvm-svn: 149799
2012-02-05 02:13:05 +00:00
Benjamin Kramer e35328c878 Remove obsolete debugging macro, make helper static.
llvm-svn: 142730
2011-10-22 19:16:39 +00:00
Peter Collingbourne affe111ba5 Move all vtable layout data into new VTableLayout class
llvm-svn: 140506
2011-09-26 01:56:50 +00:00
Peter Collingbourne 5ee9ee490e Move vtable component accessors to VTableContext
llvm-svn: 140504
2011-09-26 01:56:41 +00:00
Peter Collingbourne 71c26936a0 Remove CodeGenVTables::ComputeVTableRelatedInformation dependency on CodeGen
llvm-svn: 140503
2011-09-26 01:56:36 +00:00
Peter Collingbourne 2d2595235d Move VTT builder to AST
llvm-svn: 140501
2011-09-26 01:56:24 +00:00
Peter Collingbourne 2000e4ead5 Remove CodeGenModule field from VTTBuilder
llvm-svn: 140499
2011-09-26 01:56:10 +00:00
Peter Collingbourne d9eb79ca73 Make the VTTBuilder class independent of LLVM core
llvm-svn: 140498
2011-09-26 01:56:06 +00:00
Chris Lattner 0e62c1cc0b remove unneeded llvm:: namespace qualifiers on some core types now that LLVM.h imports
them into the clang namespace.

llvm-svn: 135852
2011-07-23 10:55:15 +00:00
Jay Foad ed8db7d9df Convert ConstantExpr::getGetElementPtr and
ConstantExpr::getInBoundsGetElementPtr to use ArrayRef.

llvm-svn: 135673
2011-07-21 14:31:17 +00:00
Chris Lattner 2192fe50da de-constify llvm::Type, patch by David Blaikie!
llvm-svn: 135370
2011-07-18 04:24:23 +00:00
Jay Foad 83be361b8a Replace the existing forms of ConstantArray::get() with a single form
that takes an ArrayRef.

llvm-svn: 133615
2011-06-22 09:24:39 +00:00
Anders Carlsson d6f1518cc9 Fix another regression from the "skip vtable pointer initialization"
optimization. Make sure to require a vtable when trying to get the address
of a VTT, otherwise we would never end up emitting the VTT.

llvm-svn: 131400
2011-05-16 04:08:36 +00:00
John McCall 358d056c14 We were emitting construction v-tables with internal linkage all the time.
Emit them instead with the linkage of the VTT.

I'm actually really ambivalent about this;  it's what GCC does, but outside
of improving code size (if the linkage is coalescing), I'm not sure it's
at all relevant.  Construction vtables are naturally referenced only by the
VTT, which is itself only referenced by complete-object constructors and
destructors;  giving the construction vtables possibly-external linkage is
important if you have an optimization that drills through the VTT to a
reference to a particular construction vtable which it cannot just emit
itself.

llvm-svn: 128374
2011-03-27 09:00:25 +00:00
Ken Dyck 16ffcac1a2 Convert the BaseOffset member of BaseSubobject to CharUnits from bits. No
change in functionality intended.

llvm-svn: 128190
2011-03-24 01:21:01 +00:00
Rafael Espindola 3968cd0f7b For consistency, use llvm::raw_ostream in the rest of the mangle api.
llvm-svn: 125360
2011-02-11 02:52:17 +00:00
Anders Carlsson 265aa7c070 Change CodeGenModule::setTypeVisibility to take a TypeVisibilityKind enum instead of an "IsForRTTI" flag.
llvm-svn: 124546
2011-01-29 20:24:48 +00:00
Anders Carlsson 5963024ff6 Give VTTs the right visibility.
llvm-svn: 124540
2011-01-29 19:34:19 +00:00
Anders Carlsson 883fc72c3c Make emitting a VTT a two-step process, much like emitting a VTable. You first get the address of the VTT, and then pass it to EmitVTTDefinition.
llvm-svn: 124539
2011-01-29 19:16:51 +00:00
Rafael Espindola facb7d0ade Also set unnamed_addr on declarations.
llvm-svn: 123531
2011-01-15 08:23:14 +00:00
Rafael Espindola d09776b945 Only add unnamed_addr to definitions.
llvm-svn: 123354
2011-01-13 01:12:55 +00:00
Rafael Espindola bb7f7686c5 Set unnamed_addr in VTTs.
llvm-svn: 123280
2011-01-11 22:29:55 +00:00
Anders Carlsson 7f95cd1817 Rename RecordLayout::getPrimaryBaseWasVirtual to isPrimaryBaseVirtual.
llvm-svn: 120133
2010-11-24 23:12:57 +00:00
Anders Carlsson fd88a6160d Rename getBaseClassOffset to getBaseClassOffsetInBits and introduce a getBaseClassOffset which returns the offset in CharUnits. Do the same thing for getVBaseClassOffset.
llvm-svn: 117881
2010-10-31 23:22:37 +00:00
John McCall c273f24196 Better solution: calculate the visibility of functions and variables
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
2010-10-30 11:50:40 +00:00
John McCall 5d865c3292 Teach IR generation to return 'this' from constructors and destructors
under the ARM ABI.

llvm-svn: 112588
2010-08-31 07:33:07 +00:00
Douglas Gregor ae498b3211 The global variable for the VTT might not have external linkage; allow
us to find local variables, too. Fixes the last remaining
Boost.Rational failure.

llvm-svn: 103203
2010-05-06 22:18:21 +00:00
Anders Carlsson 8bdbb5be19 Store the entire base subobject in SubVTTIndices.
llvm-svn: 102890
2010-05-03 00:55:11 +00:00
Anders Carlsson 859b3064cb Have getSubVTTIndex take a BaseSubobject instead of just a base.
llvm-svn: 102885
2010-05-02 23:53:25 +00:00
Anders Carlsson de0338abac Clarify an assertion.
llvm-svn: 100986
2010-04-11 20:23:06 +00:00
Anders Carlsson f141dd1b95 Remove the old vtable layout code.
llvm-svn: 99869
2010-03-30 03:43:47 +00:00
Anders Carlsson 2d016af623 Use the newly added function in the VTT builder.
llvm-svn: 99799
2010-03-29 02:14:35 +00:00
Anders Carlsson 27d86bddfe Fix thinko.
llvm-svn: 99788
2010-03-29 01:12:13 +00:00
Anders Carlsson 8baeaf0a26 Two bug fixes, we weren't updating the thunk index when creating the vtable initializer and we weren't storing the secondary virtual pointer indices.
llvm-svn: 99786
2010-03-29 01:04:16 +00:00
Anders Carlsson f1a994ce33 Add and implement CodeGenVTables::getSecondaryVirtualPointerIndex (not used yet).
llvm-svn: 99608
2010-03-26 04:23:58 +00:00
Anders Carlsson 5670d96524 More cleanup.
llvm-svn: 99605
2010-03-26 04:10:39 +00:00
Anders Carlsson a208b3997d Way more VTT builder cleanup.
llvm-svn: 99604
2010-03-26 03:56:54 +00:00
Anders Carlsson 45bd753b4a More VTT builder cleanup.
llvm-svn: 99588
2010-03-26 00:58:21 +00:00
Anders Carlsson c1b4747d5a More VTT cleanup.
llvm-svn: 99586
2010-03-26 00:50:17 +00:00
Anders Carlsson e67698bd73 Start cleaning up the VTT builder to make it work more like the VTable builder.
llvm-svn: 99581
2010-03-26 00:35:45 +00:00
Anders Carlsson 382a96550b Remove some VTT builder arguments that were always zero.
llvm-svn: 99576
2010-03-26 00:11:51 +00:00
Anders Carlsson d03325c54f More address point map shuffling.
llvm-svn: 99462
2010-03-25 00:51:13 +00:00
Anders Carlsson 0534b0201e Shuffle some code around; this will make it easier to use the new layout code for address points.
llvm-svn: 99461
2010-03-25 00:35:49 +00:00
Anders Carlsson 67fbf9853f Use getNamedGlobal instead of getGlobalVariable. (Fixes self-host).
llvm-svn: 99385
2010-03-24 05:32:05 +00:00
Anders Carlsson b35ea55e2e More vtable work; preparations for moving over to the new vtable layout code (finally).
llvm-svn: 99381
2010-03-24 03:57:14 +00:00
Anders Carlsson a864caff8c Rename CGVtableInfo to CodeGenVTables in preparation of adding another VTableInfo class.
llvm-svn: 99250
2010-03-23 04:11:45 +00:00
Anders Carlsson 62c6c72bab Pass information about whether a base is virtual or not down to getCtorVtable, we need this information in the vtable builder.
llvm-svn: 97356
2010-02-28 00:36:23 +00:00
Anders Carlsson f768db7775 Move the VTT related code into its own file, CGVTT.cpp
llvm-svn: 94079
2010-01-21 16:50:45 +00:00