| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
llvm-svn: 314581
|
|
|
|
| |
llvm-svn: 311519
|
|
|
|
| |
llvm-svn: 311286
|
|
|
|
|
|
|
|
|
|
| |
When using nested classes, if the inner class is not templated, but the outer
class is templated, the inner class will not be templated, but may have some
traits as if it were. This is particularly evident if the inner class
refers to the outer class in some fashion. Treat any class that is in the
context of a templated class as also a templated class.
llvm-svn: 310158
|
|
|
|
|
|
|
| |
Reapply r307720 to allow processing of constructors and destructors. Reuse
the diagnostics for CXXMethodDecl for them.
llvm-svn: 308077
|
|
|
|
|
|
|
|
| |
FunctionDecl already hashes most of the information in the function's type.
Add hashing of the return type, and skip hashing the function's type to avoid
redundancy and extra work when computing the hash.
llvm-svn: 307986
|
|
|
|
| |
llvm-svn: 307743
|
|
|
|
|
|
|
| |
Hash CXXConstructorDecl and CXXDestructorDecl. Extend the diagnostics from
CXXMethodDecl to include constructors and destructors.
llvm-svn: 307720
|
|
|
|
| |
llvm-svn: 307458
|
|
|
|
|
|
| |
Test inline namespaces and handle them in the ODR hash again.
llvm-svn: 306926
|
|
|
|
| |
llvm-svn: 306904
|
|
|
|
|
|
|
| |
Follow typedef chains to find the root type when processing types, and also
keep track of qualifiers.
llvm-svn: 306753
|
|
|
|
|
|
|
| |
These VarDecl's are static data members of classes. Since the initializers are
also hashed, this also provides checking for default arguments to methods.
llvm-svn: 305543
|
|
|
|
| |
llvm-svn: 305440
|
|
|
|
| |
llvm-svn: 305362
|
|
|
|
| |
llvm-svn: 305361
|
|
|
|
| |
llvm-svn: 305360
|
|
|
|
| |
llvm-svn: 305328
|
|
|
|
| |
llvm-svn: 305130
|
|
|
|
|
|
|
| |
Recommit r304592 that was reverted in r304618. r305104 should have fixed the
issue.
llvm-svn: 305110
|
|
|
|
|
|
|
| |
Speculatively try to fix the underlying issue from r304592, of underlying types
being confused when inline namespaces are used.
llvm-svn: 305104
|
|
|
|
|
|
|
| |
r304592 - [ODRHash] Add support for TemplateArgument types.
Possibly causing one of the errors in modules build bot.
llvm-svn: 304618
|
|
|
|
| |
llvm-svn: 304592
|
|
|
|
| |
llvm-svn: 304261
|
|
|
|
|
|
|
| |
r303450
[ODRHash] Support TemplateName and TemplateArgument
llvm-svn: 303459
|
|
|
|
| |
llvm-svn: 303450
|
|
|
|
| |
llvm-svn: 303233
|
|
|
|
|
|
| |
Added support for TagType, TypeWithKeyword, and all children types.
llvm-svn: 303231
|
|
|
|
|
|
|
| |
When a type in a class is from a typedef, only check the canonical type. Skip
checking the intermediate underlying types. This is in response to PR 32965
llvm-svn: 302505
|
|
|
|
|
|
| |
types.
llvm-svn: 301989
|
|
|
|
|
|
| |
It caused PR32640.
llvm-svn: 300074
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
r299989 fixes the underlying issue by waiting long enough to late parsed
arguments to be processed before doing an calculating the hash.
r298742
[ODRHash] Add error messages for mismatched parameters in methods.
r298754
[ODRHash] Add support for array and decayed types.
llvm-svn: 300001
|
|
|
|
|
|
|
|
| |
methods."
I failed to revert this in r298816.
llvm-svn: 298824
|
|
|
|
|
|
| |
They broke llvm modules builds and our internal modules infrastructure.
llvm-svn: 298816
|
|
|
|
| |
llvm-svn: 298754
|
|
|
|
| |
llvm-svn: 298742
|
|
|
|
| |
llvm-svn: 297246
|
|
|
|
|
|
|
|
| |
Now print diagnostics for static, virtual, inline, volatile, and const
differences in methods. Also use DeclarationName instead of IdentifierInfo
for additional robustness in diagnostic printing.
llvm-svn: 296932
|
|
|
|
| |
llvm-svn: 296521
|
|
|
|
| |
llvm-svn: 296221
|
|
|
|
|
|
| |
https://reviews.llvm.org/rL296170
llvm-svn: 296198
|
|
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D21675
llvm-svn: 296170
|
|
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D21675
llvm-svn: 296078
|
|
|
|
|
|
|
|
|
|
| |
Fields will now have their types added to the hash, allowing for detection of
mismatched field types. This detection allows the existing ODR checking to
produce the correct message.
Differential Revision: https://reviews.llvm.org/D21675
llvm-svn: 295931
|
|
|
|
|
|
|
|
|
| |
IdentifierInfo is hashed based on the stored string. FieldDecl versus other
Decl is now detected, as well as differently named fields.
Differential Revision: https://reviews.llvm.org/D21675
llvm-svn: 295911
|
|
|
|
|
|
|
|
|
|
| |
Add support for static_cast in classes. Add pointer-independent profiling for
Stmt's, sharing most of the logic with Stmt::Profile. This is the first of the
deep sub-Decl diffing for error messages.
Differential Revision: https://reviews.llvm.org/D21675
llvm-svn: 295890
|
|
|
|
|
|
| |
field from ODRDeclVisitor
llvm-svn: 295828
|
|
|
|
|
|
|
|
|
|
| |
Add the basics for the ODRHash class, which will only process Decl's from
a whitelist, which currently only has AccessSpecDecl. Different access
specifiers in merged classes can now be detected.
Differential Revision: https://reviews.llvm.org/D21675
llvm-svn: 295800
|
|
|
|
| |
llvm-svn: 295427
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
A slightly weaker form of ODR checking than previous attempts, but hopefully
won't break the modules build bot. Future work will be needed to catch all
cases.
When objects are imported for modules, there is a chance that a name collision
will cause an ODR violation. Previously, only a small number of such
violations were detected. This patch provides a stronger check based on
AST nodes.
The information needed to uniquely identify an object is taken from the AST and
put into a one-dimensional byte stream. This stream is then hashed to give
a value to represent the object, which is stored with the other object data
in the module.
When modules are loaded, and Decl's are merged, the hash values of the two
Decl's are compared. Only Decl's with matched hash values will be merged.
Mismatch hashes will generate a module error, and if possible, point to the
first difference between the two objects.
The transform from AST to byte stream is a modified depth first algorithm.
Due to references between some AST nodes, a pure depth first algorithm could
generate loops. For Stmt nodes, a straight depth first processing occurs.
For Type and Decl nodes, they are replaced with an index number and only on
first visit will these nodes be processed. As an optimization, boolean
values are saved and stored together in reverse order at the end of the
byte stream to lower the ammount of data that needs to be hashed.
Compile time impact was measured at 1.5-2.0% during module building, and
negligible during builds without module building.
Differential Revision: https://reviews.llvm.org/D21675
llvm-svn: 295421
|