| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
about uninitialized variables captured by blocks.
llvm-svn: 124213
|
|
|
|
| |
llvm-svn: 124076
|
|
|
|
| |
llvm-svn: 123944
|
|
|
|
|
|
|
|
|
|
|
| |
handling pseudo-path sensitivity, and instead
use those assertion conditions as dynamic checks.
These assertions would be violated when analyzing
a CFG where some branches where optimized away
during CFG construction because their branch
conditions could be trivially determined.
llvm-svn: 123943
|
|
|
|
|
|
|
|
|
|
|
|
| |
analysis for short-circuited operations. For branch written like "if (x && y)",
we maintain two sets of dataflow values for the outgoing
branches. This suppresses some common false positives
for -Wuninitialized-experimental.
This change introduces some assertion failures
when running on the LLVM codebase. WIP.
llvm-svn: 123923
|
|
|
|
|
|
| |
thousand other things which were (generally inadvertantly) relying on that.
llvm-svn: 123814
|
|
|
|
|
|
|
|
| |
references by monitoring whether an access to
a variable is solely to compute it's lvalue or
to do an lvalue-to-rvalue conversion (i.e., a load).
llvm-svn: 123777
|
|
|
|
|
|
|
| |
thus identifying a minor logical flaw in
UninitializedValuesV2.cpp.
llvm-svn: 123734
|
|
|
|
|
|
| |
also properly handle confluence of loops.
llvm-svn: 123733
|
|
|
|
| |
llvm-svn: 123602
|
|
|
|
| |
llvm-svn: 123538
|
|
|
|
|
|
| |
-Wuninitialized based on CFG dataflow analysis. WIP.
llvm-svn: 123512
|
|
|
|
|
|
|
|
|
|
|
| |
cocoa::deriveNamingConvention to control whether
the prefix should be ignored.
E.g. if ignorePrefix is true, "_init" and "init" selectors will both be result in InitRule, but if
ignorePrefix is false, only "init" will return InitRule.
llvm-svn: 123262
|
|
|
|
|
|
|
| |
more accurate, and makes it make sense for it to hold a delegating constructor
call.
llvm-svn: 123084
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
temporaries with no-return destructors. The CFG now properly supports
temporaries and implicit destructors which both makes this kludge no
longer work, and conveniently removes the need for it.
Turn on CFG handling of implicit destructors and initializers. Several
ad-hoc benchmarks don't indicate any measurable performance impact from
growing the CFG, and it fixes real correctness problems with warnings.
As a result of turning on these CFG elements, we started to tickle an
inf-loop in the unreachable code logic used for warnings. The fix is
trivial.
llvm-svn: 123056
|
|
|
|
|
|
|
| |
prefix in a printf format string is matched
with the appropriate conversion specifier.
llvm-svn: 123055
|
|
|
|
|
|
| |
prefix to format conversions (POSIX extension).
llvm-svn: 123054
|
|
|
|
|
|
|
|
|
| |
to reject this code, but at least clang doesn't
crash anymore.
Crash reported in PR 8880.
llvm-svn: 123017
|
|
|
|
|
|
|
| |
16-bits in size. Implement this by splitting WChar into two enums, like we have
for char. This fixes a miscompmilation of XULRunner, PR8856.
llvm-svn: 122558
|
|
|
|
| |
llvm-svn: 122492
|
|
|
|
| |
llvm-svn: 122423
|
|
|
|
|
|
| |
when the selector is the string 'mutable'.
llvm-svn: 122046
|
|
|
|
|
|
|
|
|
| |
to libAnalysis. Similar to Format (format string checking),
CocoaConventions has the
potential to serve clients other than the
static analyzer.
llvm-svn: 122040
|
|
|
|
|
|
|
| |
to start with lowercase characters. No
functionality change.
llvm-svn: 122035
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
implicit lvalue-to-rvalue casts that John McCall
recently introduced. This causes a whole bunch
of logic in the analyzer for handling lvalues
to vanish. It does, however, raise a few issues
in the analyzer w.r.t to modeling various constructs
(e.g., field accesses to compound literals).
The .c/.m analysis test cases that fail are
due to a missing lvalue-to-rvalue cast that
will get introduced into the AST. The .cpp
failures were more than I could investigate in
one go, and the patch was already getting huge.
I have XFAILED some of these tests, and they
should obviously be further investigated.
Some highlights of this patch include:
- CFG no longer requires an lvalue bit for
CFGElements
- StackFrameContext doesn't need an 'asLValue'
flag
- The "VisitLValue" path from GRExprEngine has
been eliminated.
Besides the test case failures (XFAILed), there
are surely other bugs that are fallout from
this change.
llvm-svn: 121960
|
|
|
|
|
|
| |
reason this is limited to C++, and it's certainly not limited to temporaries.
llvm-svn: 120996
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
used in a constructor initializer list:
struct X {
X() : au_i1(123) {}
union {
int au_i1;
float au_f1;
};
};
clang will now deal with au_i1 explicitly as an IndirectFieldDecl.
llvm-svn: 120900
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
not actually frequently used, because ImpCastExprToType only creates a node
if the types differ. So explicitly create an ICE in the lvalue-to-rvalue
conversion code in DefaultFunctionArrayLvalueConversion() as well as several
other new places, and consistently deal with the consequences throughout the
compiler.
In addition, introduce a new cast kind for loading an ObjCProperty l-value,
and make sure we emit those nodes whenever an ObjCProperty l-value appears
that's not on the LHS of an assignment operator.
This breaks a couple of rewriter tests, which I've x-failed until future
development occurs on the rewriter.
Ted Kremenek kindly contributed the analyzer workarounds in this patch.
llvm-svn: 120890
|
|
|
|
| |
llvm-svn: 120735
|
|
|
|
|
|
| |
This is required for supporting const reference to temporary objects.
llvm-svn: 120093
|
|
|
|
| |
llvm-svn: 120086
|
|
|
|
|
|
| |
the class works. Reviewed by kremenek.
llvm-svn: 120080
|
|
|
|
|
|
|
|
|
|
|
| |
1. "no 'else' after 'return'" -- this is for conformance with the
coding standards.
2. move 'else' to the line of the previous '}' -- this is for consistency.
Reviewed by kremenek.
llvm-svn: 119983
|
|
|
|
| |
llvm-svn: 119960
|
|
|
|
| |
llvm-svn: 119946
|
|
|
|
|
|
|
|
|
| |
a ternary '?' expression,
it is possible for the confluence block to only have a single predecessor due to calls to 'noreturn'
functions. Fixes assertion failure reported in PR 8619.
llvm-svn: 119284
|
|
|
|
|
|
|
|
|
| |
Elidable CXXConstructExpr should inhibit calling destructor for temporary
that is copied, not the one created. This is because eliding copy constructor
means that the object that was to be copied will be constructed directly in
memory the copy would be constructed in.
llvm-svn: 119044
|
|
|
|
|
|
| |
CXXConstructExpr.
llvm-svn: 118991
|
|
|
|
| |
llvm-svn: 118344
|
|
|
|
| |
llvm-svn: 118165
|
|
|
|
|
|
|
|
|
| |
that are not handled properly:
1. For statement: const C& c = C(0) ?: C(1) destructors generated for condition will not differ from those generated for case without prolonged lifetime of temporary,
2. There will be no destructor for constant reference member bound to temporary at the exit from constructor.
llvm-svn: 118158
|
|
|
|
|
|
|
| |
and ImplicitCastExpr to propagate asLValue AddStmtChoice property.
But do not propagate AlwaysAdd property.
llvm-svn: 117909
|
|
|
|
|
|
| |
method inlining. Temporarily fail a test case.
llvm-svn: 117907
|
|
|
|
|
|
| |
statement.
llvm-svn: 117642
|
|
|
|
|
|
|
|
|
| |
containing a DoStmt, and the LHS doesn't create a new block, then we should
return RBlock. Otherwise we'll incorrectly return NULL.
Also relax an assertion in VisitWhileStmt(). Reset 'Block' when it is finished.
llvm-svn: 117436
|
|
|
|
|
|
| |
There's only one destructor call generated for each not empty array (at least for now this should be enough).
llvm-svn: 117252
|
|
|
|
|
|
| |
There's only one destructor call generated for each not empty array (at least for now this should be enough).
llvm-svn: 117251
|
|
|
|
|
|
|
|
| |
in code generated with the compiler,
- Fixed test cases for unreachable code warnings produced by Sema.
llvm-svn: 117220
|
|
|
|
|
|
|
|
|
|
| |
it was really a 'char'
or a 'short'. This fixes that and allows the hints to suggest 'h' modifiers for small ints.
Patch by Justin Bogner!
llvm-svn: 116996
|
|
|
|
|
|
| |
ambiguous context.
llvm-svn: 116567
|