| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 120133
|
|
|
|
| |
llvm-svn: 120131
|
|
|
|
|
|
|
|
|
|
|
| |
-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
|
|
|
|
| |
llvm-svn: 117921
|
|
|
|
| |
llvm-svn: 117883
|
|
|
|
|
|
| |
getVBaseClassOffset instead.
llvm-svn: 117882
|
|
|
|
|
|
| |
getBaseClassOffset which returns the offset in CharUnits. Do the same thing for getVBaseClassOffset.
llvm-svn: 117881
|
|
|
|
| |
llvm-svn: 117878
|
|
|
|
| |
llvm-svn: 117877
|
|
|
|
| |
llvm-svn: 117875
|
|
|
|
| |
llvm-svn: 117874
|
|
|
|
| |
llvm-svn: 117873
|
|
|
|
|
|
| |
ASTRecordLayout. Start by storing the offsets in CharUnits in the ASTRecordLayout object.
llvm-svn: 117869
|
|
|
|
| |
llvm-svn: 117104
|
|
|
|
|
|
|
|
| |
complete declaration context in order to compute it.
Progress for rdar://7260160.
llvm-svn: 116508
|
|
|
|
|
|
| |
key functions (same as GCC).
llvm-svn: 116391
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
-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
|
|
|
|
| |
llvm-svn: 112005
|
|
|
|
|
|
| |
methods.
llvm-svn: 111804
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 111498
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 111314
|
|
|
|
| |
llvm-svn: 111101
|
|
|
|
| |
llvm-svn: 111087
|
|
|
|
|
|
| |
with bit-fields.
llvm-svn: 107185
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 105920
|
|
|
|
|
|
| |
still need to do this for bases.
llvm-svn: 105919
|
|
|
|
| |
llvm-svn: 105628
|
|
|
|
|
|
| |
need to go past the highest offset that's known to contain an empty base subobject.
llvm-svn: 105611
|
|
|
|
| |
llvm-svn: 105608
|
|
|
|
| |
llvm-svn: 105162
|
|
|
|
|
|
| |
the previous code. However, it still has quadratic performance, something which I intend to fix shortly in a subsequent patch.
llvm-svn: 105161
|
|
|
|
| |
llvm-svn: 105114
|
|
|
|
| |
llvm-svn: 105113
|
|
|
|
|
|
| |
functionality change.
llvm-svn: 105112
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 105104
|
|
|
|
|
|
| |
BaseSubobjectInfo. No functionality change.
llvm-svn: 105103
|
|
|
|
|
|
| |
RecordLayoutBuilder because we're going to need it to be able to correctly add offsets for primary virtual bases.
llvm-svn: 105102
|
|
|
|
| |
llvm-svn: 105007
|
|
|
|
| |
llvm-svn: 105002
|
|
|
|
| |
llvm-svn: 104861
|
|
|
|
|
|
|
| |
- Docs are fairly sketchy, if someone wants to pore through gcc to look for
holes I'd appreciate any failing test cases!
llvm-svn: 104809
|
|
|
|
| |
llvm-svn: 104808
|
|
|
|
| |
llvm-svn: 104801
|
|
|
|
| |
llvm-svn: 104795
|
|
|
|
| |
llvm-svn: 104787
|