| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
| |
more accurate, and makes it make sense for it to hold a delegating constructor
call.
llvm-svn: 123084
|
|
|
|
|
|
|
|
|
| |
to reject this code, but at least clang doesn't
crash anymore.
Crash reported in PR 8880.
llvm-svn: 123017
|
|
|
|
|
|
|
| |
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: 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
|
|
|
|
|
|
|
|
|
| |
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: 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
|
|
|
|
|
|
| |
* Fix dump() to make it consistent with the test case.
llvm-svn: 115609
|
|
|
|
| |
llvm-svn: 115592
|
|
|
|
| |
llvm-svn: 115493
|
|
|
|
| |
llvm-svn: 115275
|
|
|
|
| |
llvm-svn: 115272
|
|
|
|
| |
llvm-svn: 115271
|
|
|
|
| |
llvm-svn: 115270
|
|
|
|
|
|
|
| |
scope. Now we only add C++ struct with non-trivial destructor variables to the
local scope.
llvm-svn: 115269
|
|
|
|
| |
llvm-svn: 115266
|
|
|
|
|
|
| |
and implicit scope in for statement.
llvm-svn: 115265
|
|
|
|
|
|
| |
scopes in switch statement.
llvm-svn: 115264
|
|
|
|
|
|
| |
scopes in while and do statements.
llvm-svn: 115262
|
|
|
|
|
|
| |
scopes in if statement.
llvm-svn: 115256
|
|
|
|
|
|
| |
CFGBuilder::addLocalScopeForVarDecl. Checked type does not have to represent C++ class.
llvm-svn: 115254
|
|
|
|
|
|
|
|
| |
- Adding LocalScope for CompoundStmt,
- Adding CFGAutomaticObjDtors for end of scope, return, goto, break, continue,
- Regression tests for above cases.
llvm-svn: 115252
|
|
|
|
| |
llvm-svn: 115237
|
|
|
|
|
|
| |
Fixed some misspells in comments.
llvm-svn: 115236
|
|
|
|
|
|
|
|
|
| |
- post-increament, distance and bool conversion methods to LocalScope::const_iterator,
- adding VarDecl to LocalScope.
Fixed some misspells in comments.
llvm-svn: 115227
|
|
|
|
|
|
|
|
|
|
| |
automatic storage added:
- LocalScope class with iterator used to pointing into it,
- fat doxygen comment for LocalScope indended usage,
- BlockScopePosPair class used for storing jump targets/sources (for: goto, break, continue), that replaces raw CFGBlock pointer used earlier for this purpose.
llvm-svn: 114790
|
|
|
|
|
|
|
|
| |
- definitions of interfaces for CFGInitializer and CFGAutomaticObjDtor,
- support for above classes to print_elem function (renamed print_stmt),
- support for VarDecls in StmtPrinterHelper.
llvm-svn: 114403
|
|
|
|
| |
llvm-svn: 114062
|
|
|
|
|
|
| |
and discussions with Ted and Jordy.
llvm-svn: 114056
|
|
|
|
|
|
|
|
| |
assertion failure
on code containing GNU statement expressions reported in PR 8141.
llvm-svn: 113953
|
|
|
|
|
|
| |
parameter. Patch by Marcin Świderski!
llvm-svn: 113898
|
|
|
|
| |
llvm-svn: 113826
|
|
|
|
|
|
|
|
| |
We decided that scope information doesn't belong in the CFG at all, since it is a lexical construct.
Patch by Marcin Świderski!
llvm-svn: 113798
|
|
|
|
|
|
| |
for checkers).
llvm-svn: 113572
|