| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
| |
This workaround is fairly lame: we simulate the first element's constructor
and destructor and rely on the region invalidation to "initialize" the rest
of the elements.
llvm-svn: 160809
|
| |
|
|
|
|
|
| |
This uses CFG to tell if a constructor call is for a member, and uses
the member's region appropriately.
llvm-svn: 160808
|
| |
|
|
|
|
|
|
|
| |
Previously we were using ParentMap and crawling through the parent DeclStmt.
This should be at least slightly cheaper (and is also more flexible).
No (intended) functionality change.
llvm-svn: 160807
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Most of the logic here is fairly simple; the interesting thing is that
we now distinguish complete constructors from base or delegate constructors.
We also make sure to cast to the base class before evaluating a constructor
or destructor, since non-virtual base classes may behave differently.
This includes some refactoring of VisitCXXConstructExpr and VisitCXXDestructor
in order to keep ExprEngine.cpp as clean as possible (leaving the details for
ExprEngineCXX.cpp).
llvm-svn: 160806
|
| |
|
|
|
|
|
| |
Test case in the next commit, which enables destructors under certain
circumstances.
llvm-svn: 160805
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This modifies BugReporter and friends to handle CallEnter and CallExitEnd
program points that came from implicit call CFG nodes (read: destructors).
This required some extra handling for nested implicit calls. For example,
the added multiple-inheritance test case has a call graph that looks like this:
testMultipleInheritance3
~MultipleInheritance
~SmartPointer
~Subclass
~SmartPointer
***bug here***
In this case we correctly notice that we started in an inlined function
when we reach the CallEnter program point for the second ~SmartPointer.
However, when we reach the next CallEnter (for ~Subclass), we were
accidentally re-using the inner ~SmartPointer call in the diagnostics.
Rather than guess if we saw the corresponding CallExitEnd based on the
contents of the active path, we now just ask the PathDiagnostic if there's
any known stack before popping off the top path.
(A similar issue could have occured without multiple inheritance, but there
wasn't a test case for it.)
llvm-svn: 160804
|
| |
|
|
|
|
|
| |
At the very least this means initializer nodes for constructors and
automatic object destructors are present in the CFG.
llvm-svn: 160803
|
| |
|
|
|
|
|
| |
This avoids an assertion crash when we invalidate on a destructor call
instead of inlining it.
llvm-svn: 160802
|
| |
|
|
| |
llvm-svn: 160801
|
| |
|
|
|
|
| |
Fallout from CmpRuns.py API changes in r160314.
llvm-svn: 160800
|
| |
|
|
|
|
| |
is missing in method prototype. // rdar://11939584
llvm-svn: 160789
|
| |
|
|
|
|
| |
respect default arguments".
llvm-svn: 160788
|
| |
|
|
| |
llvm-svn: 160784
|
| |
|
|
|
|
| |
block mangling
llvm-svn: 160783
|
| |
|
|
|
|
| |
-cxx-abi microsoft) now that PR13389 is fixed (mangling of return types)
llvm-svn: 160782
|
| |
|
|
| |
llvm-svn: 160780
|
| |
|
|
| |
llvm-svn: 160772
|
| |
|
|
|
|
|
|
|
|
| |
- Some cleanup(the TODOs) will be done after ObjC method inlining is
complete.
- Simplified CallEvent::getDefinition not to require ISDynamicDispatch
parameter.
- Also addressed Jordan's comments from r160530.
llvm-svn: 160768
|
| |
|
|
|
|
| |
null/uninitialized pointer.
llvm-svn: 160767
|
| |
|
|
|
|
| |
testcase.
llvm-svn: 160766
|
| |
|
|
|
|
| |
needed).
llvm-svn: 160764
|
| |
|
|
| |
llvm-svn: 160763
|
| |
|
|
| |
llvm-svn: 160761
|
| |
|
|
|
|
|
|
| |
value by scanning the path, rather than assuming we have visited the '?:' operator
as a terminator (which sets a value indicating which expression to grab the
final ternary expression value from).
llvm-svn: 160760
|
| |
|
|
|
|
|
|
| |
"memset' lazily when is needed in translation of
struct-valued methods which require checkinf of nil receivers
outside their bodies. // rdar://11847319
llvm-svn: 160759
|
| |
|
|
|
|
|
|
|
| |
have the time
to fix all the issues. Currently the code is essentially unmaintained and buggy, and
needs major revision (with coupled enhancements to the analyzer core).
llvm-svn: 160754
|
| |
|
|
|
|
|
|
| |
-internal-externc-isystem.
rdar://11949066
llvm-svn: 160752
|
| |
|
|
|
|
|
| |
-iwithprefixbefore, and -isystem options, per Matt's suggestion.
rdar://11949066
llvm-svn: 160750
|
| |
|
|
|
|
|
|
|
| |
-Strip -iquote and -M options.
-Quote -D options to avoid problems with command line macros that include
parens.
rdar://11949066
llvm-svn: 160743
|
| |
|
|
| |
llvm-svn: 160738
|
| |
|
|
| |
llvm-svn: 160720
|
| |
|
|
|
|
|
|
|
| |
and became necessary with the change to require BindableMatchers
for binding.
Also fixes PR 13445: "hasSourceExpression only works for implicit casts".
llvm-svn: 160716
|
| |
|
|
|
|
|
|
| |
assertion failure.
I saw the case it XPASSes.
llvm-svn: 160715
|
| |
|
|
| |
llvm-svn: 160709
|
| |
|
|
|
|
| |
Next steps are adding information about types & source location handling.
llvm-svn: 160708
|
| |
|
|
| |
llvm-svn: 160707
|
| |
|
|
|
|
| |
<rdar://problem/10987863>.
llvm-svn: 160706
|
| |
|
|
|
|
|
|
|
|
| |
Rather than adding a ContainsUnexpandedParameterPack bit to essentially every
AST node, we tunnel the bit directly up to the surrounding lambda expression
when we reach a context where an unexpanded pack can not normally appear.
Thus any statement or declaration within a lambda can now potentially contain
an unexpanded parameter pack.
llvm-svn: 160705
|
| |
|
|
| |
llvm-svn: 160702
|
| |
|
|
| |
llvm-svn: 160700
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This tests for the ability to include a "message" field in availability
attributes, like so:
extern void ATSFontGetName(const char *oName)
__attribute__((availability(macosx,introduced=8.0,deprecated=9.0,
message="use CTFontCopyFullName")));
This was actually supported in Clang 3.1, but we got a request for a
__has_feature so that header files can use this more safely. It's
unfortunate that the 3.1 release doesn't include this, however.
<rdar://problem/11886458>
llvm-svn: 160699
|
| |
|
|
| |
llvm-svn: 160697
|
| |
|
|
|
|
| |
parameter names.
llvm-svn: 160696
|
| |
|
|
|
|
|
|
|
| |
short-circuiting when building the CFG. Also be sure to skip parens before
checking for the && / || special cases. Finally, fix some crashes in CFG
printing in the presence of calls to destructors for array of array of class
type.
llvm-svn: 160691
|
| |
|
|
| |
llvm-svn: 160689
|
| |
|
|
|
|
| |
unless they appear in a decl-specifier-seq.
llvm-svn: 160688
|
| |
|
|
| |
llvm-svn: 160686
|
| |
|
|
|
|
| |
No need to abuse default arguments.
llvm-svn: 160684
|
| |
|
|
|
|
| |
[in]), parameter name and description paragraph.
llvm-svn: 160682
|
| |
|
|
|
|
|
|
|
|
| |
A warning was added in r150128 for returning non-C compatible
user-defined types from functions with C linkage.
This makes the text more clear for the case when the type isn't
decidedly non-C compatible, but incomplete.
llvm-svn: 160681
|