| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
| |
inlining support isn't complete, and needs
to be reworked to model CallEnter/CallExit (just like all other calls). For now, treat constructors mostly
like other function calls, making the analysis of C++ code just a little more useful.
llvm-svn: 129166
|
| |
|
|
|
|
| |
zero also indicates one element array.
llvm-svn: 129157
|
| |
|
|
|
|
| |
options.
llvm-svn: 129153
|
| |
|
|
| |
llvm-svn: 129145
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch authored by Eric Niebler.
Many methods on the Sema class (e.g. ConvertPropertyForRValue) take Expr
pointers as in/out parameters (Expr *&). This is especially true for the
routines that apply implicit conversions to nodes in-place. This design is
workable only as long as those conversions cannot fail. If they are allowed
to fail, they need a way to report their failures. The typical way of doing
this in clang is to use an ExprResult, which has an extra bit to signal a
valid/invalid state. Returning ExprResult is de riguour elsewhere in the Sema
interface. We suggest changing the Expr *& parameters in the Sema interface
to ExprResult &. This increases interface consistency and maintainability.
This interface change is important for work supporting MS-style C++
properties. For reasons explained here
<http://lists.cs.uiuc.edu/pipermail/cfe-dev/2011-February/013180.html>,
seemingly trivial operations like rvalue/lvalue conversions that formerly
could not fail now can. (The reason is that given the semantics of the
feature, getter/setter method lookup cannot happen until the point of use, at
which point it may be found that the method does not exist, or it may have the
wrong type, or overload resolution may fail, or it may be inaccessible.)
llvm-svn: 129143
|
| |
|
|
|
|
|
| |
implement lhs's protocols. // rdar://9091389.
llvm-svn: 129142
|
| |
|
|
| |
llvm-svn: 129141
|
| |
|
|
| |
llvm-svn: 129108
|
| |
|
|
| |
llvm-svn: 129103
|
| |
|
|
|
|
| |
statements.
llvm-svn: 129102
|
| |
|
|
| |
llvm-svn: 129095
|
| |
|
|
|
|
| |
outputting dwarf-debug-flags.
llvm-svn: 129094
|
| |
|
|
|
|
| |
output missing data.
llvm-svn: 129093
|
| |
|
|
| |
llvm-svn: 129091
|
| |
|
|
|
|
| |
it.
llvm-svn: 129089
|
| |
|
|
|
|
| |
anything.
llvm-svn: 129086
|
| |
|
|
|
|
|
| |
-Allow removing a line completely if it ends up empty
-Provide more control on what should be removed.
llvm-svn: 129085
|
| |
|
|
|
|
|
| |
existing CC_PRINT_OPTIONS and CC_PRINT_HEADERS, which can be used to
transparently capture the compiler diagnostics from a build.
llvm-svn: 129082
|
| |
|
|
|
|
|
| |
Change the return type of CodeGenVTables::getVirtualBaseOffsetOffset() to
CharUnits. No change in functionality intended.
llvm-svn: 129072
|
| |
|
|
|
|
| |
implicit cast for scalars.
llvm-svn: 129066
|
| |
|
|
|
|
|
|
|
|
|
|
| |
The idea is that you can create a VarDecl with an unknown type, or a
FunctionDecl with an unknown return type, and it will still be valid to
access that object as long as you explicitly cast it at every use. I'm
still going back and forth about how I want to test this effectively, but
I wanted to go ahead and provide a skeletal implementation for the LLDB
folks' benefit and because it also improves some diagnostic goodness for
placeholder expressions.
llvm-svn: 129065
|
| |
|
|
|
|
|
|
|
| |
with debug info.]
Use CharUnits for the offsets in the VirtualBaseClassOffsetOffsetsMapTy. No
change in functionality intended.
llvm-svn: 129048
|
| |
|
|
|
|
|
|
|
| |
info.]
Use CharUnits for the offset type in the ClassNamesAndOffsets map in
dumpLayout(). No change in functionality intended.
llvm-svn: 129046
|
| |
|
|
|
|
|
| |
Use CharUnits for the offsets in the VBaseOffsetOffsetsMapTy types. No
change in functionality intended.
llvm-svn: 129043
|
| |
|
|
| |
llvm-svn: 129017
|
| |
|
|
|
|
|
| |
types such that protocols are seached first. Fixes
// rdar://9224670
llvm-svn: 129016
|
| |
|
|
|
|
| |
Patch by Bobby Powers
llvm-svn: 129014
|
| |
|
|
|
|
|
| |
pass a previously failing clang test.
// rdar://8808439
llvm-svn: 129004
|
| |
|
|
| |
llvm-svn: 129001
|
| |
|
|
|
|
| |
intrinsic's attributes.
llvm-svn: 129000
|
| |
|
|
|
|
|
| |
be sure to consume the argument index that actually had the attribute
rather than always the first. rdar://problem/9234108
llvm-svn: 128998
|
| |
|
|
|
|
| |
Patch by Syoyo Fujita! Reviewed by Chris Lattner! Checked in by me!
llvm-svn: 128984
|
| |
|
|
|
|
|
| |
A situation where we can get an invalid ExprResult without an error.
Fixes PR8394. Patch by Justin Bogner!
llvm-svn: 128979
|
| |
|
|
|
|
|
| |
within a token, like trigraphs and escaped newlines.
Patch by Marcin Kowalczyk!
llvm-svn: 128978
|
| |
|
|
| |
llvm-svn: 128957
|
| |
|
|
|
|
|
| |
As a result, I had to remove a c++ version of a clang
test which requires more scrutiny on my part.
llvm-svn: 128950
|
| |
|
|
| |
llvm-svn: 128948
|
| |
|
|
| |
llvm-svn: 128944
|
| |
|
|
|
|
|
| |
targets) when load/store results in multiple instructions.
// rdar://8808439
llvm-svn: 128937
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
marked explicitly as uninitialized through direct self initialization:
int x = x;
With r128894 we prevented warnings about this code, and this patch
teaches the analysis engine to continue analyzing subsequent uses of
'x'. This should wrap up PR9624.
There is still an open question of whether we should suppress the
maybe-uninitialized warnings resulting from variables initialized in
this fashion. The definitely-uninitialized uses should always be warned.
llvm-svn: 128932
|
| |
|
|
| |
llvm-svn: 128928
|
| |
|
|
| |
llvm-svn: 128923
|
| |
|
|
| |
llvm-svn: 128921
|
| |
|
|
|
|
|
|
| |
generate a warning any time the strcat() function is used with a note suggesting to use a function which provides bounded buffers. CWE-119.
Also, brings the security syntax checker more inline with coding standards.
llvm-svn: 128916
|
| |
|
|
| |
llvm-svn: 128915
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
developers can see if their driver changed any cl::Option's. The
current implementation isn't perfect but handles most kinds of
options. This is nice to have when decomposing the stages of
compilation and moving between different drivers. It's also a good
sanity check when comparing results produced by different command line
invocations that are expected to produce the comparable results.
Note: This is not an attempt to prolong the life of cl::Option. On the
contrary, it's a placeholder for a feature that must exist when
cl::Option is replaced by a more appropriate framework. A new
framework needs: a central option registry, dynamic name lookup,
non-global containers of option values (e.g. per-module,
per-function), *and* the ability to print options values and their defaults at
any point during compilation.
llvm-svn: 128911
|
| |
|
|
| |
llvm-svn: 128908
|
| |
|
|
|
|
|
|
| |
function more clear and obvious in behavior.
Add some comments documenting the behavior of the primary diagnostic helper.
llvm-svn: 128901
|
| |
|
|
|
|
|
| |
diagnostic emission. The fixit hint, when suggested, typically has
nothing to do with the nature or form of the reference.
llvm-svn: 128899
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
extracts a function to handle the emission of the diagnostic separately
from the walking over the set of uninitialized uses.
Also updates the naming used within this extracted function to be a bit
more consistent with the rest of Clang's naming patterns.
The next step will be breaking this apart so that we can go through
different functions rather than tracking so many boolean variables.
llvm-svn: 128898
|