| Commit message (Collapse) | Author | Age | Files | Lines | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
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
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
int x = x;
GCC disables its warnings on this construct as a way of indicating that
the programmer intentionally wants the variable to be uninitialized.
Only the warning on the initializer is turned off in this iteration.
This makes the code a lot more ugly, but starts commenting the
surprising behavior here. This is a WIP, I want to refactor it
substantially for clarity, and to determine whether subsequent warnings
should be suppressed or not.
llvm-svn: 128894
 | 
| | 
| 
| 
|  | 
llvm-svn: 128893
 | 
| | 
| 
| 
| 
| 
|  | 
Does anyone want to buy me a new brain?
llvm-svn: 128890
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
I think this moves the code in the desired direction of the new style
recommendations (and style conventional in Clang), but if anyone prefers
the previous style, or has other suggestions just chime in and I'll
follow up.
llvm-svn: 128878
 | 
| | 
| 
| 
| 
| 
|  | 
is a single implementation. No functionality change intended.
llvm-svn: 128877
 | 
| | 
| 
| 
| 
| 
|  | 
handling.
llvm-svn: 128866
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
numerous CFG and UninitializedValues analysis changes:
1) Change the CFG to include the DeclStmt for conditional variables, instead of using the condition itself as a faux DeclStmt.
2) Update ExprEngine (the static analyzer) to understand (1), so not to regress.
3) Update UninitializedValues.cpp to initialize all tracked variables to Uninitialized at the start of the function/method.
4) Only use the SelfReferenceChecker (SemaDecl.cpp) on global variables, leaving the dataflow analysis to handle other cases.
The combination of (1) and (3) allows the dataflow-based -Wuninitialized to find self-init problems when the initializer
contained control-flow.
llvm-svn: 128858
 | 
| | 
| 
| 
|  | 
llvm-svn: 128857
 | 
| | 
| 
| 
|  | 
llvm-svn: 128855
 | 
| | 
| 
| 
|  | 
llvm-svn: 128854
 | 
| | 
| 
| 
|  | 
llvm-svn: 128853
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
dependency cycle
between libFrontend and libDriver.
llvm-svn: 128852
 | 
| | 
| 
| 
|  | 
llvm-svn: 128850
 | 
| | 
| 
| 
| 
| 
|  | 
CompilerInvocation from command-line args.
llvm-svn: 128848
 | 
| | 
| 
| 
| 
| 
|  | 
warnings from the dataflow analysis that include within the initializer of a variable.
llvm-svn: 128843
 | 
| | 
| 
| 
|  | 
llvm-svn: 128842
 | 
| | 
| 
| 
|  | 
llvm-svn: 128840
 | 
| | 
| 
| 
| 
| 
|  | 
already has an initializer.
llvm-svn: 128838
 | 
| | 
| 
| 
| 
| 
|  | 
a note with a location for the function prototype.
llvm-svn: 128833
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
Sandeep Patel noticed that the alignment was wrong for Neon vector types,
and this change is partly derived from his patch.  For the APCS ABI, however,
additional changes were required: the maximum ABI alignment is 32 bits and
the preferred alignment for i64 and f64 types should be 64 bits.
llvm-svn: 128825
 | 
| | 
| 
| 
| 
| 
| 
|  | 
I'm pretty sure this is the right fix, but I would appreciate it if someone
else would double-check.
llvm-svn: 128806
 | 
| | 
| 
| 
| 
| 
|  | 
doesn't get called for each CallExpr. Instead it does a switch and only runs the check for the proper identifier. Slight speed improvement (probably significant on very large ASTs), and should make it easier and more clear to add more checks for other CallExpr's later.
llvm-svn: 128785
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
position of a branch condition, and a new generateNode method to BranchNodeBuilder using PostCondition ProgramPoint. This method generates a new ExplodedNode but not a new block edge.
Patch by Lei Zhang!
llvm-svn: 128784
 | 
| | 
| 
| 
| 
| 
|  | 
assigned a LazyCompoundValue.  Fixes <rdar://problem/9163742> and PR 9522.
llvm-svn: 128783
 | 
| | 
| 
| 
| 
| 
|  | 
non-header file.
llvm-svn: 128780
 | 
| | 
| 
| 
| 
| 
|  | 
CharUnits. No change in functionality intended.
llvm-svn: 128776
 | 
| | 
| 
| 
| 
| 
|  | 
change in functionality intended.
llvm-svn: 128773
 | 
| | 
| 
| 
| 
| 
|  | 
dumpLayout(). No change in functionality intended.
llvm-svn: 128771
 | 
| | 
| 
| 
| 
| 
|  | 
change in functionality intended.
llvm-svn: 128770
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
a couple of operator overloads which form interesting expressions in the
AST.
I added test cases for both bugs with the c-index-test's token
annotation feature. Also, thanks to John McCall for confirming that this
is the correct solution.
llvm-svn: 128768
 | 
| | 
| 
| 
|  | 
llvm-svn: 128762
 | 
| | 
| 
| 
| 
| 
|  | 
didn't know how to handle a specific Expr type.
llvm-svn: 128761
 | 
| | 
| 
| 
| 
| 
|  | 
a given CFGBlock was analyzed too many times.
llvm-svn: 128760
 | 
| | 
| 
| 
| 
| 
|  | 
functionality intended.
llvm-svn: 128756
 | 
| | 
| 
| 
| 
| 
|  | 
CharUnits. No change in functionality intended.
llvm-svn: 128754
 | 
| | 
| 
| 
| 
| 
|  | 
functionality intended.
llvm-svn: 128753
 | 
| | 
| 
| 
| 
| 
|  | 
No change in functionality intended.
llvm-svn: 128752
 | 
| | 
| 
| 
| 
| 
|  | 
block pointer nested inside a block. // rdar:// 9204669
llvm-svn: 128747
 | 
| | 
| 
| 
|  | 
llvm-svn: 128738
 |