[PATCH] D49438: [analyzer][UninitializedObjectChecker] New flag to turn off dereferencing

2018-08-06 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus added a comment. I think what pointer chasing should do, is check whether that pointer owns the pointee. In that case, it should be fine to analyze it. Do you mind if I put a TODO around flag's description stating that this should be implemented and pointer chasing should be enabled b

[PATCH] D49438: [analyzer][UninitializedObjectChecker] New flag to turn off dereferencing

2018-08-06 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus added a comment. In https://reviews.llvm.org/D49438#1189772, @george.karpenkov wrote: > > I think what pointer chasing should do, is check whether that pointer owns > > the pointee > > But ownership is a convention, and it's not always deducible from a codebase. How about the followi

[PATCH] D49438: [analyzer][UninitializedObjectChecker] New flag to turn off dereferencing

2018-08-06 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus added a comment. If we ignore references, check whether the pointee was constructed within the constructor, and maybe add some other clever heuristics, I'm very much in favor of enabling pointer chasing by enabled. But I totally support disabling it for now. https://reviews.llvm.org

[PATCH] D49438: [analyzer][UninitializedObjectChecker] New flag to turn off dereferencing

2018-08-06 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus added a comment. I'll be back in office tomorrow, about ~13 hours later. But feel free to commit it on my behalf if it's urgent. https://reviews.llvm.org/D49438 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org

[PATCH] D49438: [analyzer][UninitializedObjectChecker] New flag to turn off dereferencing

2018-08-07 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus updated this revision to Diff 159486. Szelethus added a comment. Added the TODO we were discussing. https://reviews.llvm.org/D49438 Files: lib/StaticAnalyzer/Checkers/UninitializedObjectChecker.cpp test/Analysis/cxx-uninitialized-object-inheritance.cpp test/Analysis/cxx-uninitia

[PATCH] D49438: [analyzer][UninitializedObjectChecker] New flag to turn off dereferencing

2018-08-07 Thread Umann Kristóf via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes. Closed by commit rC339135: [analyzer][UninitializedObjectChecker] New flag to turn off dereferencing (authored by Szelethus, committed by ). Repository: rC Clang https://reviews.llvm.org/D49438 Files: lib/StaticAnalyz

[PATCH] D48436: [analyzer][UninitializedObjectChecker] Fixed a false negative by no longer filtering out certain constructor calls

2018-08-07 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus added a comment. Polite ping :) https://reviews.llvm.org/D48436 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[PATCH] D48436: [analyzer][UninitializedObjectChecker] Fixed a false negative by no longer filtering out certain constructor calls

2018-08-08 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus added a comment. In https://reviews.llvm.org/D48436#1191458, @NoQ wrote: > Ok, let's commit this and see how to fix it later. Thanks! ^-^ > I still think it's more important to come up with clear rules of who is > responsible for initializing fields than making sure our warnings are

[PATCH] D48436: [analyzer][UninitializedObjectChecker] Fixed a false negative by no longer filtering out certain constructor calls

2018-08-08 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus updated this revision to Diff 159687. Szelethus added a comment. Added a TODO. https://reviews.llvm.org/D48436 Files: lib/StaticAnalyzer/Checkers/UninitializedObjectChecker.cpp test/Analysis/cxx-uninitialized-object.cpp Index: test/Analysis/cxx-uninitialized-object.cpp ==

[PATCH] D48436: [analyzer][UninitializedObjectChecker] Fixed a false negative by no longer filtering out certain constructor calls

2018-08-08 Thread Umann Kristóf via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes. Closed by commit rC339237: [analyzer][UninitializedObjectChecker] Fixed a false negative by no longer… (authored by Szelethus, committed by ). Repository: rC Clang https://reviews.llvm.org/D48436 Files: lib/StaticAnal

[PATCH] D49199: [analyzer][UninitializedObjectChecker] Pointer/reference objects are dereferenced according to dynamic type

2018-08-08 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus added a comment. Thanks! I plan on revisiting how heap allocated regions are handled in the future. https://reviews.llvm.org/D49199 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe

[PATCH] D49199: [analyzer][UninitializedObjectChecker] Pointer/reference objects are dereferenced according to dynamic type

2018-08-08 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus updated this revision to Diff 159699. Szelethus added a comment. Rebased to latest trunk. https://reviews.llvm.org/D49199 Files: lib/StaticAnalyzer/Checkers/UninitializedObjectChecker.cpp test/Analysis/cxx-uninitialized-object-inheritance.cpp test/Analysis/cxx-uninitialized-obje

[PATCH] D49199: [analyzer][UninitializedObjectChecker] Pointer/reference objects are dereferenced according to dynamic type

2018-08-08 Thread Umann Kristóf via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes. Closed by commit rC339240: [analyzer][UninitializedObjectChecker] Pointer/reference objects are… (authored by Szelethus, committed by ). Repository: rC Clang https://reviews.llvm.org/D49199 Files: lib/StaticAnalyzer/C

[PATCH] D49986: [ADT] ImmutableList::add parameters are switched

2018-08-08 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus added a subscriber: dblaikie. Szelethus added a comment. In https://reviews.llvm.org/D49985#1181568, @NoQ wrote: > In https://reviews.llvm.org/D49985#1181564, @dblaikie wrote: > > > It looks like concat orders the arguments in the same way that the output > > would be (so concat(X, lis

[PATCH] D50503: [analyzer][UninitializedObjectChecker] Refactoring p1.: ImmutableList factory is no longer static

2018-08-09 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus created this revision. Szelethus added reviewers: NoQ, xazax.hun, rnkovacs, george.karpenkov. Herald added subscribers: cfe-commits, mikhail.ramalho, a.sidorin, szepet, whisperity. This diff is the first part of a series of patches to refactor `UninitializedObjectChecker`. The goal of

[PATCH] D50504: [analyzer][UninitializedObjectChecker] Refactoring p2.: Moving pointer chasing to a separate file

2018-08-09 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus created this revision. Szelethus added reviewers: george.karpenkov, NoQ, xazax.hun, rnkovacs. Herald added subscribers: cfe-commits, mikhail.ramalho, a.sidorin, szepet, whisperity, mgorny. In this patch, the following classes and functions have been moved to a header file: - `FieldCha

[PATCH] D50505: [analyzer][UninitializedObjectChecker] Refactoring p3.: printTail moved out from FieldChainInfo

2018-08-09 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus created this revision. Szelethus added reviewers: xazax.hun, george.karpenkov, NoQ, rnkovacs. Herald added subscribers: cfe-commits, mikhail.ramalho, a.sidorin, szepet, whisperity. Szelethus added a dependency: D50504: [analyzer][UninitializedObjectChecker] Refactoring p2.: Moving point

[PATCH] D50506: [analyzer][UninitializedObjectChecker] Refactoring p4.: Wrap FieldRegions and reduce weight on FieldChainInfo

2018-08-09 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus created this revision. Szelethus added reviewers: xazax.hun, rnkovacs, NoQ, george.karpenkov. Herald added subscribers: cfe-commits, mikhail.ramalho, a.sidorin, szepet, whisperity. This patch is the bread and butter of the refactoring effort. Currently on trunk, `FieldChainInfo` is a s

[PATCH] D50508: [analyzer][UninitializedObjectChecker] Refactoring p5.: Handle pedantic mode in the checker class only

2018-08-09 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus created this revision. Szelethus added reviewers: NoQ, george.karpenkov, rnkovacs, xazax.hun. Herald added subscribers: cfe-commits, mikhail.ramalho, a.sidorin, szepet, whisperity. A class named `FindUninitializedFields` shouldn't care about whether the checker will outright ignore all

[PATCH] D50509: [analyzer][UninitializedObjectChecker] Refactoring p6.: Move dereferencing to a function

2018-08-09 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus created this revision. Szelethus added reviewers: george.karpenkov, NoQ, xazax.hun, rnkovacs. Herald added subscribers: cfe-commits, mikhail.ramalho, a.sidorin, szepet, whisperity. Now that it has it's own file, it makes little sense for `isPointerOrReferenceUninit` to be this large, s

[PATCH] D50509: [analyzer][UninitializedObjectChecker] Refactoring p6.: Move dereferencing to a function

2018-08-09 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus updated this revision to Diff 159916. Szelethus added a comment. Fixed a comment. https://reviews.llvm.org/D50509 Files: lib/StaticAnalyzer/Checkers/UninitializedPointee.cpp Index: lib/StaticAnalyzer/Checkers/UninitializedPointee.cpp

[PATCH] D49228: [analyzer][UninitializedObjectChecker] Void pointer objects are casted back to their dynmic type in note message

2018-08-09 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus updated this revision to Diff 159918. Szelethus added a comment. The solution now relies on the refactored version of the checker. Note that it modifies roughly 75% less code ;). https://reviews.llvm.org/D49228 Files: lib/StaticAnalyzer/Checkers/UninitializedPointee.cpp test/Anal

[PATCH] D50488: [Analyzer] Checker for non-determinism caused by sorting of pointer-like keys

2018-08-10 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus added inline comments. Comment at: lib/StaticAnalyzer/Checkers/PointerSortingChecker.cpp:91-100 + const QualType IterTy = CE->getArg(0)->getType(); + const RecordDecl *RD = +IterTy->getUnqualifiedDesugaredType()->getAsCXXRecordDecl(); + + if (RD->field_empty()) +

[PATCH] D50488: [Analyzer] Checker for non-determinism caused by sorting of pointer-like keys

2018-08-10 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus added a comment. I'm only a beginner, but here are some things that caught my eye. I really like the idea! :) Comment at: lib/StaticAnalyzer/Checkers/PointerSortingChecker.cpp:28 + +// PointerSortingVisitor class. +class PointerSortingVisitor : public StmtVisitor { -

[PATCH] D50504: [analyzer][UninitializedObjectChecker] Refactoring p2.: Moving pointer chasing to a separate file

2018-08-13 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus updated this revision to Diff 160398. Szelethus added a comment. Moved the checker files to `lib/StaticAnalyzer/Checkers/UninitializedObject/`. https://reviews.llvm.org/D50504 Files: lib/StaticAnalyzer/Checkers/CMakeLists.txt lib/StaticAnalyzer/Checkers/UninitializedObject/Uniniti

[PATCH] D50503: [analyzer][UninitializedObjectChecker] Refactoring p1.: ImmutableList factory is no longer static

2018-08-13 Thread Umann Kristóf via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes. Closed by commit rL339591: [analyzer][UninitializedObjectChecker] Refactoring p1.: ImmutableList factory… (authored by Szelethus, committed by ). Herald added a subscriber: llvm-commits. Changed prior to commit: https://r

[PATCH] D50504: [analyzer][UninitializedObjectChecker] Refactoring p2.: Moving pointer chasing to a separate file

2018-08-13 Thread Umann Kristóf via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes. Closed by commit rC339595: [analyzer][UninitializedObjectChecker] Refactoring p2.: Moving pointer chasing… (authored by Szelethus, committed by ). Repository: rC Clang https://reviews.llvm.org/D50504 Files: lib/Static

[PATCH] D50505: [analyzer][UninitializedObjectChecker] Refactoring p3.: printTail moved out from FieldChainInfo

2018-08-13 Thread Umann Kristóf via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes. Closed by commit rC339596: [analyzer][UninitializedObjectChecker] Refactoring p3.: printTail moved out… (authored by Szelethus, committed by ). Changed prior to commit: https://reviews.llvm.org/D50505?vs=159891&id=160406#

[PATCH] D50506: [analyzer][UninitializedObjectChecker] Refactoring p4.: Wrap FieldRegions and reduce weight on FieldChainInfo

2018-08-13 Thread Umann Kristóf via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes. Closed by commit rC339599: [analyzer][UninitializedObjectChecker] Refactoring p4.: Wrap FieldRegions and… (authored by Szelethus, committed by ). Changed prior to commit: https://reviews.llvm.org/D50506?vs=159896&id=16041

[PATCH] D50508: [analyzer][UninitializedObjectChecker] Refactoring p5.: Handle pedantic mode in the checker class only

2018-08-13 Thread Umann Kristóf via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes. Closed by commit rC339601: [analyzer][UninitializedObjectChecker] Refactoring p5.: Handle pedantic mode in… (authored by Szelethus, committed by ). Changed prior to commit: https://reviews.llvm.org/D50508?vs=159901&id=160

[PATCH] D49228: [analyzer][UninitializedObjectChecker] Void pointer objects are casted back to their dynmic type in note message

2018-08-14 Thread Umann Kristóf via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes. Closed by commit rC339653: [analyzer][UninitializedObjectChecker] Void pointers are casted back to their… (authored by Szelethus, committed by ). Changed prior to commit: https://reviews.llvm.org/D49228?vs=159918&id=16052

[PATCH] D46081: [analyzer] Expand conversion check to check more expressions for overflow and underflow

2018-08-15 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus added a comment. Herald added a subscriber: mikhail.ramalho. To me it seems like @pfultz2 hasn't been on the site for a couple months. Is this patch going to be commited anytime? https://reviews.llvm.org/D46081 ___ cfe-commits mailing lis

[PATCH] D50488: [Analyzer] Checker for non-determinism caused by sorting of pointer-like keys

2018-08-17 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus added a comment. I think testcases for non-class iterator objects would be valuable. Comment at: lib/StaticAnalyzer/Checkers/PointerSortingChecker.cpp:72-76 + auto IteratesPointerKeysM = hasType(cxxRecordDecl(has( +fieldDecl(hasType(ha

[PATCH] D50509: [analyzer][UninitializedObjectChecker] Refactoring p6.: Move dereferencing to a function

2018-08-17 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus updated this revision to Diff 161209. Szelethus edited the summary of this revision. https://reviews.llvm.org/D50509 Files: lib/StaticAnalyzer/Checkers/UninitializedObject/UninitializedObjectChecker.cpp lib/StaticAnalyzer/Checkers/UninitializedObject/UninitializedPointee.cpp Index:

[PATCH] D50892: [analyzer][UninitializedObjectChecker] Correct dynamic type is acquired for record pointees

2018-08-17 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus created this revision. Szelethus added reviewers: george.karpenkov, NoQ, xazax.hun, rnkovacs. Herald added subscribers: cfe-commits, mikhail.ramalho, a.sidorin, szepet, whisperity. Repository: rC Clang https://reviews.llvm.org/D50892 Files: lib/StaticAnalyzer/Checkers/Uninitialize

[PATCH] D50892: [analyzer][UninitializedObjectChecker] Correct dynamic type is acquired for record pointees

2018-08-17 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus added inline comments. Comment at: test/Analysis/cxx-uninitialized-object-inheritance.cpp:787 // TODO: we'd expect the note: {{uninitialized field 'this->x'}} int x; // no-note }; The checker should be able to catch this one -- for some reason it

[PATCH] D50904: [analyzer][UninitializedObjectChecker] Added documentation to the checker list

2018-08-17 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus created this revision. Szelethus added reviewers: george.karpenkov, NoQ, rnkovacs, xazax.hun. Herald added subscribers: cfe-commits, mikhail.ramalho, a.sidorin, szepet, whisperity. I'm not too sure that this aligns with the very short descriptions of other checkers, but I don't see how

[PATCH] D50904: [analyzer][UninitializedObjectChecker] Added documentation to the checker list

2018-08-17 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus updated this revision to Diff 161262. Szelethus added a comment. Removed a TODO from the checker file. https://reviews.llvm.org/D50904 Files: lib/StaticAnalyzer/Checkers/UninitializedObject/UninitializedObjectChecker.cpp www/analyzer/alpha_checks.html Index: www/analyzer/alpha_ch

[PATCH] D50905: [analyzer][UninitializedObjectChecker][WIP] Explicit namespace resolution for inherited data members

2018-08-17 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus created this revision. Szelethus added reviewers: NoQ, george.karpenkov, xazax.hun, rnkovacs. Herald added subscribers: cfe-commits, mikhail.ramalho, a.sidorin, szepet, whisperity. For the following example: struct Base { int x; }; // In a different translation unit s

[PATCH] D50904: [analyzer][UninitializedObjectChecker] Added documentation to the checker list

2018-08-17 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus added inline comments. Comment at: www/analyzer/alpha_checks.html:334-336 +The checker regards inherited fields as direct fields, so one +will recieve warnings for uninitialized inherited data members +as well. This statement has been debated for a whi

[PATCH] D50488: [Analyzer] Checker for non-determinism caused by sorting of pointer-like keys

2018-08-17 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus added inline comments. Comment at: lib/StaticAnalyzer/Checkers/PointerSortingChecker.cpp:72-76 + auto IteratesPointerKeysM = hasType(cxxRecordDecl(has( +fieldDecl(hasType(hasCanonicalType( + pointsTo(hasC

[PATCH] D50904: [analyzer][UninitializedObjectChecker] Added documentation to the checker list

2018-08-17 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus added inline comments. Comment at: www/analyzer/alpha_checks.html:334-336 +The checker regards inherited fields as direct fields, so one +will recieve warnings for uninitialized inherited data members +as well. NoQ wrote: > Szelethus wrote: > > This st

[PATCH] D50509: [analyzer][UninitializedObjectChecker] Refactoring p6.: Move dereferencing to a function

2018-08-17 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus added inline comments. Comment at: lib/StaticAnalyzer/Checkers/UninitializedObject/UninitializedPointee.cpp:223 + // int*). + while (auto Tmp = V.getAs()) { +// We can't reason about symbolic regions, assume its initialized. NoQ wrote: > Hmm, i s

[PATCH] D50509: [analyzer][UninitializedObjectChecker] Refactoring p6.: Move dereferencing to a function

2018-08-17 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus added inline comments. Comment at: lib/StaticAnalyzer/Checkers/UninitializedObject/UninitializedPointee.cpp:223 + // int*). + while (auto Tmp = V.getAs()) { +// We can't reason about symbolic regions, assume its initialized. NoQ wrote: > Szelethu

[PATCH] D50963: [NFC] Don't define static function in header (UninitializedObject.h)

2018-08-20 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus accepted this revision. Szelethus added a comment. This revision is now accepted and ready to land. Thanks! Learned something new today then :) This solution looks a lot cleaner as well. https://reviews.llvm.org/D50963 ___ cfe-commits mai

[PATCH] D50509: [analyzer][UninitializedObjectChecker] Refactoring p6.: Move dereferencing to a function

2018-08-21 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus added inline comments. Comment at: lib/StaticAnalyzer/Checkers/UninitializedObject/UninitializedPointee.cpp:223 + // int*). + while (auto Tmp = V.getAs()) { +// We can't reason about symbolic regions, assume its initialized. Szelethus wrote: > No

[PATCH] D50509: [analyzer][UninitializedObjectChecker] Refactoring p6.: Move dereferencing to a function

2018-08-21 Thread Umann Kristóf via Phabricator via cfe-commits
This revision was not accepted when it landed; it landed in state "Needs Review". This revision was automatically updated to reflect the committed changes. Closed by commit rL340265: [analyzer][UninitializedObjectChecker] Refactoring p6.: Move dereferencing to a… (authored by Szelethus, committed

[PATCH] D50904: [analyzer][UninitializedObjectChecker] Added documentation to the checker list

2018-08-21 Thread Umann Kristóf via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes. Closed by commit rL340266: [analyzer][UninitializedObjectChecker] Added documentation to the checker list (authored by Szelethus, committed by ). Herald added a subscriber: llvm-commits. Changed prior to commit: https://r

[PATCH] D50488: [Analyzer] Checker for non-determinism caused by sorting of pointer-like keys

2018-08-21 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus added a comment. In https://reviews.llvm.org/D50488#1204655, @mgrang wrote: > In https://reviews.llvm.org/D50488#1203876, @Szelethus wrote: > > > > > > This is my first time with ASTMatchers and I am not sure how to get the > value_type from hasType (I don't see a matcher for value_typ

[PATCH] D50905: [analyzer][UninitializedObjectChecker] Explicit namespace resolution for inherited data members

2018-08-21 Thread Umann Kristóf via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes. Closed by commit rC340272: [analyzer][UninitializedObjectChecker] Explicit namespace resolution for… (authored by Szelethus, committed by ). Changed prior to commit: https://reviews.llvm.org/D50905?vs=161271&id=161700#toc

[PATCH] D50905: [analyzer][UninitializedObjectChecker] Explicit namespace resolution for inherited data members

2018-08-21 Thread Umann Kristóf via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes. Closed by commit rL340272: [analyzer][UninitializedObjectChecker] Explicit namespace resolution for… (authored by Szelethus, committed by ). Herald added a subscriber: llvm-commits. Changed prior to commit: https://review

[PATCH] D51057: [analyzer][UninitializedObjectChecker] Fixed dereferencing

2018-08-21 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus created this revision. Szelethus added reviewers: NoQ, george.karpenkov, xazax.hun, rnkovacs. Herald added subscribers: cfe-commits, mikhail.ramalho, a.sidorin, szepet, whisperity. This patch aims to fix derefencing, which has been debated for months now. Instead of working with `SVal`

[PATCH] D50892: [analyzer][UninitializedObjectChecker] Correct dynamic type is acquired for record pointees

2018-08-21 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus added inline comments. Comment at: lib/StaticAnalyzer/Checkers/UninitializedObject/UninitializedPointee.cpp:187-191 // If FR is a pointer pointing to a non-primitive type. if (Optional RecordV = DerefdV.getAs()) { const TypedValueRegion *R = Rec

[PATCH] D51057: [analyzer][UninitializedObjectChecker] Fixed dereferencing

2018-08-21 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus added a comment. @NoQ, is this how you imagined derefercing to work? I'm still a little uncertain that I implemented this in a way that addresses all your concerns. Repository: rC Clang https://reviews.llvm.org/D51057 ___ cfe-commits m

[PATCH] D45532: [StaticAnalyzer] Checker to find uninitialized fields after a constructor call

2018-05-15 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus added a comment. I'm afraid it'll be even more time before I post a new diff. There are some things that `ProgramState` is lacking, so I'll get that fixed first in a different pull request first. Comment at: lib/StaticAnalyzer/Checkers/UninitializedObjectChecker.cpp

[PATCH] D46891: [StaticAnalyzer] Added a getLValue method to ProgramState for bases

2018-05-15 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus created this revision. Szelethus added reviewers: xazax.hun, NoQ. Herald added subscribers: cfe-commits, a.sidorin, rnkovacs, szepet, whisperity. Herald added a reviewer: george.karpenkov. Repository: rC Clang https://reviews.llvm.org/D46891 Files: include/clang/StaticAnalyzer/Core

[PATCH] D46891: [StaticAnalyzer] Added a getLValue method to ProgramState for bases

2018-05-16 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus updated this revision to Diff 147033. Szelethus edited the summary of this revision. Szelethus added a comment. Added a `CXXRecordDecl` version. https://reviews.llvm.org/D46891 Files: include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h Index: include/clang/StaticAnalyze

[PATCH] D46891: [StaticAnalyzer] Added a getLValue method to ProgramState for bases

2018-05-16 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus updated this revision to Diff 147045. Szelethus added a comment. Fixed a typo. https://reviews.llvm.org/D46891 Files: include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h Index: include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h ==

[PATCH] D46891: [StaticAnalyzer] Added a getLValue method to ProgramState for bases

2018-05-17 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus added a comment. Thanks for the review! If you like the new overload, can you please commit this for me? https://reviews.llvm.org/D46891 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinf

[PATCH] D45532: [StaticAnalyzer] Checker to find uninitialized fields after a constructor call

2018-05-18 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus updated this revision to Diff 147485. Szelethus added a comment. In this diff, I preferred placing `TODO`s in places where the logic of the checker would have changed too much. While I didn't have a strict rule for this in mind, I tried changing as little as possible in order to implem

[PATCH] D45532: [StaticAnalyzer] Checker to find uninitialized fields after a constructor call

2018-05-18 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus marked 28 inline comments as done. Szelethus added inline comments. Comment at: lib/StaticAnalyzer/Checkers/UninitializedObjectChecker.cpp:181-182 +/// Returns whether FD can be (transitively) dereferenced to a void pointer type +/// (void*, void**, ...). The type of t

[PATCH] D46933: [analyzer] Added template argument lists to the Pathdiagnostic output

2018-05-25 Thread Umann Kristóf via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes. Closed by commit rC333275: [analyzer] Added template argument lists to the Pathdiagnostic output (authored by Szelethus, committed by ). Herald added a subscriber: cfe-commits. Repository: rC Clang https://reviews.llvm.o

[PATCH] D46891: [StaticAnalyzer] Added a getLValue method to ProgramState for bases

2018-05-25 Thread Umann Kristóf via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes. Closed by commit rC333278: [analyzer] Added a getLValue method to ProgramState for bases (authored by Szelethus, committed by ). Repository: rC Clang https://reviews.llvm.org/D46891 Files: include/clang/StaticAnalyzer

[PATCH] D45532: [StaticAnalyzer] Checker to find uninitialized fields after a constructor call

2018-05-27 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus marked 9 inline comments as done. Szelethus added a comment. Thanks again for taking a look :) Comment at: lib/StaticAnalyzer/Checkers/UninitializedObjectChecker.cpp:359-372 + // Checking bases. + const auto *CXXRD = dyn_cast(RD); + if (!CXXRD) +return Contains

[PATCH] D45532: [StaticAnalyzer] Checker to find uninitialized fields after a constructor call

2018-05-28 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus marked 4 inline comments as done. Szelethus added a comment. I decided to mark the inline comments in `isPointerOrReferenceUninit` regarding the dereferencing loop termination done for now. I left several TODO's in the function to be fixed later, with many of them depending on one anot

[PATCH] D51057: [analyzer][UninitializedObjectChecker] Fixed dereferencing

2018-08-23 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus updated this revision to Diff 162198. Szelethus added a comment. Addressed the inline comments. - Added a `llvm::SmallSet` to further ensure the termination of the loop. - Changed `isLocType` to `isDereferencableType`, block pointers are regarded as primitive objects. - Added new tests

[PATCH] D51057: [analyzer][UninitializedObjectChecker] Fixed dereferencing

2018-08-23 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus marked 5 inline comments as done. Szelethus added inline comments. Comment at: lib/StaticAnalyzer/Checkers/UninitializedObject/UninitializedObject.h:259 + return T->isBuiltinType() || T->isEnumeralType() || + T->isMemberPointerType() || T->isBlockPointerType()

[PATCH] D50892: [analyzer][UninitializedObjectChecker] Correct dynamic type is acquired for record pointees

2018-08-23 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus updated this revision to Diff 162205. Szelethus added a comment. Rebased to https://reviews.llvm.org/D51057. https://reviews.llvm.org/D50892 Files: lib/StaticAnalyzer/Checkers/UninitializedObject/UninitializedPointee.cpp test/Analysis/cxx-uninitialized-object-inheritance.cpp Ind

[PATCH] D50892: [analyzer][UninitializedObjectChecker] Correct dynamic type is acquired for record pointees

2018-08-23 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus added inline comments. Comment at: lib/StaticAnalyzer/Checkers/UninitializedObject/UninitializedPointee.cpp:187-191 // If FR is a pointer pointing to a non-primitive type. if (Optional RecordV = DerefdV.getAs()) { const TypedValueRegion *R = Rec

[PATCH] D50892: [analyzer][UninitializedObjectChecker] Correct dynamic type is acquired for record pointees

2018-08-27 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus updated this revision to Diff 162658. Szelethus marked 5 inline comments as done. Szelethus added a comment. Actually, the note messages were incorrect as in this case the static and dynamic type of the object differs. https://reviews.llvm.org/D50892 Files: lib/StaticAnalyzer/Check

[PATCH] D51300: [analyzer][UninitializedObjectChecker] No longer using nonloc::LazyCompoundVal

2018-08-27 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus created this revision. Szelethus added reviewers: NoQ, george.karpenkov, xazax.hun, rnkovacs. Herald added subscribers: cfe-commits, mikhail.ramalho, a.sidorin, szepet, whisperity. As rightly pointed out by @NoQ, `nonloc::LazyCompoundVal`s were only used to acquire a constructed object

[PATCH] D49986: [ADT] ImmutableList::add parameters are switched

2018-08-28 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus abandoned this revision. Szelethus added a comment. In https://reviews.llvm.org/D49986#1192798, @Szelethus wrote: > In https://reviews.llvm.org/D49985#1181568, @NoQ wrote: > > > In https://reviews.llvm.org/D49985#1181564, @dblaikie wrote: > > > > > It looks like concat orders the argume

[PATCH] D50892: [analyzer][UninitializedObjectChecker] Correct dynamic type is acquired for record pointees

2018-08-28 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus added inline comments. Comment at: test/Analysis/cxx-uninitialized-object-inheritance.cpp:802 +struct DynTBase2 { + int x; // expected-note{{uninitialized field 'static_cast(this->bptr)->DynTBase2::x'}} +}; NoQ wrote: > Mmm, what's the value of casting

[PATCH] D51300: [analyzer][UninitializedObjectChecker] No longer using nonloc::LazyCompoundVal

2018-08-29 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus added inline comments. Comment at: lib/StaticAnalyzer/Checkers/UninitializedObject/UninitializedObjectChecker.cpp:448-449 Loc ThisLoc = Context.getSValBuilder().getCXXThis(CtorDecl->getParent(), Context.getStack

[PATCH] D51417: [analyzer][UninitializedObjectChecker] Updated comments

2018-08-29 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus created this revision. Szelethus added reviewers: NoQ, george.karpenkov, xazax.hun, rnkovacs. Herald added subscribers: cfe-commits, mikhail.ramalho, a.sidorin, szepet, whisperity. Some of the comments are incorrect, imprecise, or simply nonexistent. Since I have a better grasp on how

[PATCH] D51417: [analyzer][UninitializedObjectChecker] Updated comments

2018-08-29 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus added inline comments. Comment at: lib/StaticAnalyzer/Checkers/UninitializedObject/UninitializedObjectChecker.cpp:377-397 -// TODO: This function constructs an incorrect string if a void pointer is a -// part of the chain: -// -// struct B { int x; } -// -// struct

[PATCH] D50892: [analyzer][UninitializedObjectChecker] Correct dynamic type is acquired for record pointees

2018-08-29 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus added inline comments. Comment at: test/Analysis/cxx-uninitialized-object-inheritance.cpp:802 +struct DynTBase2 { + int x; // expected-note{{uninitialized field 'static_cast(this->bptr)->DynTBase2::x'}} +}; NoQ wrote: > Szelethus wrote: > > NoQ wrote:

[PATCH] D51057: [analyzer][UninitializedObjectChecker] Fixed dereferencing

2018-08-29 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus added a comment. I managed to cause a bunch of crashes with this patch, so consider it as a work in progress for now :/ https://reviews.llvm.org/D51057 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/

[PATCH] D51057: [analyzer][UninitializedObjectChecker] Fixed dereferencing

2018-08-29 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus updated this revision to Diff 163185. Szelethus added a comment. Fixed two crashes. Interesting how many much better this approach works, as I've never encountered `FunctionType`d objects or only forward declared typed pointers after dereferencing. https://reviews.llvm.org/D51057 Fi

[PATCH] D50892: [analyzer][UninitializedObjectChecker] Correct dynamic type is acquired for record pointees

2018-08-31 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus updated this revision to Diff 163479. Szelethus added a comment. Fixed a crash, where the super region was symbolic. In https://reviews.llvm.org/D50892#1218060, @NoQ wrote: > Let's commit then? I'd be much more comfortable landing https://reviews.llvm.org/D51057 before modifying der

[PATCH] D51531: [analyzer][UninitializedObjectChecker] Uninit regions are only reported once

2018-08-31 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus created this revision. Szelethus added reviewers: NoQ, george.karpenkov, xazax.hun, rnkovacs. Herald added subscribers: cfe-commits, mikhail.ramalho, a.sidorin, szepet, whisperity. Especially with pointees, it a lot of meaningless reports came from uninitialized regions that were alrea

[PATCH] D51300: [analyzer][UninitializedObjectChecker] No longer using nonloc::LazyCompoundVal

2018-08-31 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus added a comment. Would you be comfortable me commiting this without that assert, or should I come up with a more risk-free solution? Repository: rC Clang https://reviews.llvm.org/D51300 ___ cfe-commits mailing list cfe-commits@lists.ll

[PATCH] D51057: [analyzer][UninitializedObjectChecker] Fixed dereferencing

2018-08-31 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus updated this revision to Diff 163499. Szelethus added a comment. Reuploaded with `-U9`. Oops. https://reviews.llvm.org/D51057 Files: lib/StaticAnalyzer/Checkers/UninitializedObject/UninitializedObject.h lib/StaticAnalyzer/Checkers/UninitializedObject/UninitializedObjectChecker

[PATCH] D51531: [analyzer][UninitializedObjectChecker] Uninit regions are only reported once

2018-08-31 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus updated this revision to Diff 163542. https://reviews.llvm.org/D51531 Files: lib/StaticAnalyzer/Checkers/UninitializedObject/UninitializedObject.h lib/StaticAnalyzer/Checkers/UninitializedObject/UninitializedObjectChecker.cpp lib/StaticAnalyzer/Checkers/UninitializedObject/Uniniti

[PATCH] D51300: [analyzer][UninitializedObjectChecker] No longer using nonloc::LazyCompoundVal

2018-09-04 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus updated this revision to Diff 163813. Szelethus added a comment. Fixed a crash where the returned region's type wasn't `CXXRecordDecl`. I'm not even sure how this is possible -- and unfortunately I've been unable to create a minimal (not) working example for this, and I wasn't even abl

[PATCH] D51057: [analyzer][UninitializedObjectChecker] Fixed dereferencing

2018-09-05 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus updated this revision to Diff 163992. Szelethus added a comment. Fixed an assertation failure where a lambda field's this capture was undefined. https://reviews.llvm.org/D51057 Files: lib/StaticAnalyzer/Checkers/UninitializedObject/UninitializedObject.h lib/StaticAnalyzer/Checkers

[PATCH] D51057: [analyzer][UninitializedObjectChecker] Fixed dereferencing

2018-09-05 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus added inline comments. Comment at: lib/StaticAnalyzer/Checkers/UninitializedObject/UninitializedPointee.cpp:126-127 if (V.isUndef()) { +assert(!FR->getDecl()->getType()->isReferenceType() && + "References must be initialized!"); return addFieldToU

[PATCH] D51417: [analyzer][UninitializedObjectChecker] Updated comments

2018-09-05 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus added a comment. Polite ping ^-^ Repository: rC Clang https://reviews.llvm.org/D51417 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[PATCH] D51679: [analyzer][UninitializedObjectChecker] Refactored checker options

2018-09-05 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus created this revision. Szelethus added reviewers: george.karpenkov, NoQ, xazax.hun, rnkovacs. Herald added subscribers: cfe-commits, mikhail.ramalho, a.sidorin, szepet, whisperity. Since I plan to add a number of new flags, it made sense to encapsulate them in a new struct, in order no

[PATCH] D51680: [analyzer][UninitializedObjectChecker] New flag to ignore union-like constructs

2018-09-05 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus created this revision. Szelethus added reviewers: george.karpenkov, NoQ, rnkovacs, xazax.hun. Herald added subscribers: cfe-commits, mikhail.ramalho, a.sidorin, szepet, whisperity. Based on a suggestion from @george.karpenkov. In some cases, structs are used as unions with a help of a

[PATCH] D51680: [analyzer][UninitializedObjectChecker] New flag to ignore union-like constructs

2018-09-05 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus updated this revision to Diff 164050. Szelethus added a comment. Added doc to `www/analyzer/alpha_checks.html`. https://reviews.llvm.org/D51680 Files: lib/StaticAnalyzer/Checkers/UninitializedObject/UninitializedObject.h lib/StaticAnalyzer/Checkers/UninitializedObject/Uninitialize

[PATCH] D51300: [analyzer][UninitializedObjectChecker] No longer using nonloc::LazyCompoundVal

2018-09-05 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus planned changes to this revision. Szelethus added a comment. > Sounds like a test case would be great to have. Aye. I'd be good to land this with that testcase. There are a variety of other projects I'm working on (related to the checker), and none of them depend on this patch, so I'l

[PATCH] D50488: [Analyzer] Checker for non-determinism caused by sorting of pointer-like elements

2018-09-05 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus added a comment. > How then do you think I should try matching the IntPointerArray example? I am > now leaning towards not doing this via AST Matchers as I am not sure if I can > easily match more complex cases. I've sadly reached the end of my knowledge on AST based analysis, but jus

[PATCH] D51057: [analyzer][UninitializedObjectChecker] Fixed dereferencing

2018-09-07 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus added inline comments. Comment at: test/Analysis/cxx-uninitialized-object.cpp:879-902 +struct LambdaWrapper { + void *func; // no-crash + int dontGetFilteredByNonPedanticMode = 0; + + LambdaWrapper(void *ptr) : func(ptr) {} // expected-warning{{1 uninitialized field

[PATCH] D51531: [analyzer][UninitializedObjectChecker] Uninit regions are only reported once

2018-09-07 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus added a comment. Polite ping :) https://reviews.llvm.org/D51531 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[PATCH] D51866: [analyzer][UninitializedObjectChecker][WIP] New flag to ignore guarded uninitialized fields

2018-09-10 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus created this revision. Szelethus added reviewers: george.karpenkov, NoQ, xazax.hun, rnkovacs. Herald added subscribers: cfe-commits, mikhail.ramalho, a.sidorin, szepet, whisperity. This patch is an implementation of the ideas discussed on the mailing list

[PATCH] D51680: [analyzer][UninitializedObjectChecker] New flag to ignore records based on it's fields

2018-09-10 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus updated this revision to Diff 164696. Szelethus retitled this revision from "[analyzer][UninitializedObjectChecker] New flag to ignore union-like constructs" to "[analyzer][UninitializedObjectChecker] New flag to ignore records based on it's fields". Szelethus edited the summary of thi

[PATCH] D51680: [analyzer][UninitializedObjectChecker] New flag to ignore records based on it's fields

2018-09-10 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus marked an inline comment as done. Szelethus added inline comments. Comment at: lib/StaticAnalyzer/Checkers/UninitializedObject/UninitializedObjectChecker.cpp:468 +static bool isUnionLike(const RecordDecl *RD) { + llvm::Regex ContainsKindOrTag("[kK]ind|[tT]ag"); +

[PATCH] D51300: [analyzer][UninitializedObjectChecker] No longer using nonloc::LazyCompoundVal

2018-09-10 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus added a comment. There are some nasty environment issues I'm dealing with, so the issue is the lack of a well functioning creduce, but I'll get it done eventually. https://reviews.llvm.org/D51300 ___ cfe-commits mailing list cfe-commits@l

[PATCH] D50892: [analyzer][UninitializedObjectChecker] Correct dynamic type is acquired for record pointees

2018-09-10 Thread Umann Kristóf via Phabricator via cfe-commits
Szelethus marked an inline comment as done. Szelethus added inline comments. Comment at: test/Analysis/cxx-uninitialized-object-inheritance.cpp:802 +struct DynTBase2 { + int x; // expected-note{{uninitialized field 'static_cast(this->bptr)->DynTBase2::x'}} +}; S

  1   2   3   4   5   6   >