- Nov 24, 2010
-
-
Anders Carlsson authored
llvm-svn: 120131
-
- Nov 18, 2010
-
-
Argyrios Kyrtzidis authored
-Move the stuff of Diagnostic related to creating/querying diagnostic IDs into a new DiagnosticIDs class. -DiagnosticIDs can be shared among multiple Diagnostics for multiple translation units. -The rest of the state in Diagnostic object is considered related and tied to one translation unit. -Have Diagnostic point to the SourceManager that is related with. Diagnostic can now accept just a SourceLocation instead of a FullSourceLoc. -Reflect the changes to various interfaces. llvm-svn: 119730
-
- Nov 01, 2010
-
-
Anders Carlsson authored
llvm-svn: 117921
-
Anders Carlsson authored
llvm-svn: 117883
-
Anders Carlsson authored
llvm-svn: 117882
-
Anders Carlsson authored
Rename getBaseClassOffset to getBaseClassOffsetInBits and introduce a getBaseClassOffset which returns the offset in CharUnits. Do the same thing for getVBaseClassOffset. llvm-svn: 117881
-
- Oct 31, 2010
-
-
Anders Carlsson authored
llvm-svn: 117878
-
Anders Carlsson authored
llvm-svn: 117877
-
Anders Carlsson authored
llvm-svn: 117875
-
Anders Carlsson authored
llvm-svn: 117874
-
Anders Carlsson authored
llvm-svn: 117873
-
Anders Carlsson authored
Baby steps towards using only CharUnits for base class offsets in ASTRecordLayout. Start by storing the offsets in CharUnits in the ASTRecordLayout object. llvm-svn: 117869
-
- Oct 22, 2010
-
-
Benjamin Kramer authored
llvm-svn: 117104
-
- Oct 14, 2010
-
-
Argyrios Kyrtzidis authored
Store in PCH the key function of C++ class to avoid deserializing the complete declaration context in order to compute it. Progress for rdar://7260160. llvm-svn: 116508
-
- Oct 13, 2010
-
-
Argyrios Kyrtzidis authored
Embrace C++ ABI 5.2.6 and consider that template instantiations don't have key functions (same as GCC). llvm-svn: 116391
-
- Sep 22, 2010
-
-
Argyrios Kyrtzidis authored
-Wpadded warns when undesired padding is introduced in a struct. (rdar://7469556) -Wpacked warns if a struct is given the packed attribute, but the packed attribute has no effect on the layout or the size of the struct. Such structs may be mis-aligned for little benefit. The warnings are emitted at the point where layout is calculated, that is at RecordLayoutBuilder. To avoid calculating the layouts of all structs regardless of whether they are needed or not, I let the layouts be lazily constructed when needed. This has the disadvantage that the above warnings will be emitted only when they are used for IR gen, and not e.g with -fsyntax-only: $ cat t.c struct S { char c; int i; }; void f(struct S* s) {} $ clang -fsyntax-only -Wpadded t.c $ clang -c -Wpadded t.c -o t.o t.c:3:7: warning: padding struct 'struct S' with 3 bytes to align 'i' [-Wpadded] int i; ^ 1 warning generated. This is a good tradeoff between providing the warnings and not calculating layouts for all structs in case the user has enabled a couple of rarely used warnings. llvm-svn: 114544
-
- Aug 25, 2010
-
-
Argyrios Kyrtzidis authored
llvm-svn: 112005
-
- Aug 23, 2010
-
-
Chandler Carruth authored
methods. llvm-svn: 111804
-
- Aug 19, 2010
-
-
Charles Davis authored
active C++ ABI as a raw string, we store it as an enum. This should improve performance somewhat. And yes, this time, I started from a clean build directory, and all the tests passed. :) llvm-svn: 111507
-
John McCall authored
llvm-svn: 111498
-
Charles Davis authored
All it does right now is add space for two vtable pointers instead of one when a class has both virtual methods and virtual bases. This is a requirement of the Microsoft ABI, since it has separate vtables for methods and bases. Other stuff will come up over time, but we'll cross those bridges when we get to them. llvm-svn: 111493
-
Alexis Hunt authored
Now all classes derived from Attr are generated from TableGen. Additionally, Attr* is no longer its own linked list; SmallVectors or Attr* are used. The accompanying LLVM commit contains the updates to TableGen necessary for this. Some other notes about newly-generated attribute classes: - The constructor arguments are a SourceLocation and a Context&, followed by the attributes arguments in the order that they were defined in Attr.td - Every argument in Attr.td has an appropriate accessor named getFoo, and there are sometimes a few extra ones (such as to get the length of a variadic argument). Additionally, specific_attr_iterator has been introduced, which will iterate over an AttrVec, but only over attributes of a certain type. It can be accessed through either Decl::specific_attr_begin/end or the global functions of the same name. llvm-svn: 111455
-
- Aug 18, 2010
-
-
Daniel Dunbar authored
llvm-svn: 111314
-
- Aug 15, 2010
-
-
Argyrios Kyrtzidis authored
llvm-svn: 111101
-
Argyrios Kyrtzidis authored
llvm-svn: 111087
-
- Jun 29, 2010
-
-
Daniel Dunbar authored
with bit-fields. llvm-svn: 107185
-
Jeffrey Yasskin authored
there's an explicit guard on isPolymorphic, and virtual bases don't affect the key function calculation. This allows people to call ASTContext::getKeyFunction on arbitrary classes. llvm-svn: 107143
-
- Jun 13, 2010
-
-
Anders Carlsson authored
llvm-svn: 105920
-
Anders Carlsson authored
Implement part of the EmptySubobjectMap optimization described in PR6998. We still need to do this for bases. llvm-svn: 105919
-
- Jun 08, 2010
-
-
Anders Carlsson authored
llvm-svn: 105628
-
Anders Carlsson authored
When checking whether we can place a base subobject at an offset, we don't need to go past the highest offset that's known to contain an empty base subobject. llvm-svn: 105611
-
Anders Carlsson authored
llvm-svn: 105608
-
- May 30, 2010
-
-
Anders Carlsson authored
llvm-svn: 105162
-
Anders Carlsson authored
Turn on the new empty base subobject tracking code. It's a bit faster than the previous code. However, it still has quadratic performance, something which I intend to fix shortly in a subsequent patch. llvm-svn: 105161
-
- May 29, 2010
-
-
Anders Carlsson authored
llvm-svn: 105114
-
Anders Carlsson authored
llvm-svn: 105113
-
Anders Carlsson authored
llvm-svn: 105112
-
Anders Carlsson authored
Rework the way virtual primary bases are added when laying out classes. Instead of doing it as a separate step, we now use the BaseSubobjectInfo and use it when laying out the bases. This fixes a bug where we would either not add a primary virtual base at all, or add it at the wrong offset. llvm-svn: 105110
-
Anders Carlsson authored
llvm-svn: 105104
-
Anders Carlsson authored
Change RecordLayoutBuilder::LayoutNonVirtualBase to take a BaseSubobjectInfo. No functionality change. llvm-svn: 105103
-