- Mar 09, 2012
-
-
Ted Kremenek authored
Essentially, a bug centers around a story for various symbols and regions. We should only include the path diagnostic events that relate to those symbols and regions. The pruning is done by associating a set of interesting symbols and regions with a BugReporter, which can be modified at BugReport creation or by BugReporterVisitors. This patch reduces the diagnostics emitted in several of our test cases. I've vetted these as having desired behavior. The only regression is a missing null check diagnostic for the return value of realloc() in test/Analysis/malloc-plist.c. This will require some investigation to fix, and I have added a FIXME to the test case. llvm-svn: 152361
-
Anna Zaks authored
analyzed. The CallGraph is used when inlining is on, which is the current default. This alone does not bring any performance improvement. It's a stepping stone for the upcoming optimization in which we do not re-analyze a function that has already been analyzed while inlined in other functions. Using the call graph makes it easier to play with the order of functions to minimize redundant analyzes. llvm-svn: 152352
-
Anna Zaks authored
- Remove -analyzer-inline-call. - Add -analyzer-ipa=[none|inlining] - Add -analyzer-inlining-mode to allow experimentation for different performance tuning methods. llvm-svn: 152351
-
Anna Zaks authored
llvm-svn: 152350
-
Richard Smith authored
llvm-svn: 152349
-
Richard Smith authored
for a few kinds of error. Specifically: Since we're after translation phase 6, the "" token might be formed by multiple source-level string literals. Checking the token width is not a correct way of detecting empty string literals, due to escaped newlines. Diagnose and recover from a missing space between "" and suffix, and from string literals other than "", which are followed by a suffix. llvm-svn: 152348
-
- Mar 08, 2012
-
-
John McCall authored
introduces cleanups anyway. llvm-svn: 152345
-
Richard Smith authored
first codepoint! Also, don't reject empty raw string literals for spurious "encoding" issues. Also, don't rely on undefined behavior in ConvertUTF.c. llvm-svn: 152344
-
Sebastian Redl authored
Turn explicit construction of temporaries using initializer list syntax into CXXTemporaryObjectExprs, not just CXXConstructExprs, which have a worrying tendency to vanish. Fixes PR12167. llvm-svn: 152340
-
Benjamin Kramer authored
llvm-svn: 152339
-
Argyrios Kyrtzidis authored
without reverting the changes. llvm-svn: 152333
-
Daniel Dunbar authored
llvm-svn: 152332
-
Daniel Dunbar authored
llvm-svn: 152331
-
Daniel Dunbar authored
- This change seems to be a tiny loss on 403.gcc/combine.c (.2%), but I think it is the right thing to do. llvm-svn: 152330
-
Argyrios Kyrtzidis authored
"the script will run forever continually picking new tests to run", make it so. llvm-svn: 152327
-
Argyrios Kyrtzidis authored
llvm-svn: 152324
-
Daniel Dunbar authored
hot path will typically profitably get inlined (based on what I see from the users of PartialDiagnostic). llvm-svn: 152322
-
Daniel Dunbar authored
llvm-svn: 152321
-
Rafael Espindola authored
HandleCXXStaticMemberVarInstantiation. Suggested by Argyrios. llvm-svn: 152320
-
Rafael Espindola authored
llvm-svn: 152317
-
Rafael Espindola authored
llvm-svn: 152316
-
Richard Smith authored
llvm-svn: 152303
-
Richard Smith authored
user-defined-floating-literal. Support for raw forms of these literals to follow. llvm-svn: 152302
-
Stepan Dyatkovskiy authored
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20120130/136146.html Implemented CaseIterator and it solves almost all described issues: we don't need to mix operand/case/successor indexing anymore. Base iterator class is implemented as a template since it may be initialized either from "const SwitchInst*" or from "SwitchInst*". ConstCaseIt is just a read-only iterator. CaseIt is read-write iterator; it allows to change case successor and case value. Usage of iterator allows totally remove resolveXXXX methods. All indexing convertions done automatically inside the iterator's getters. Main way of iterator usage looks like this: SwitchInst *SI = ... // intialize it somehow for (SwitchInst::CaseIt i = SI->caseBegin(), e = SI->caseEnd(); i != e; ++i) { BasicBlock *BB = i.getCaseSuccessor(); ConstantInt *V = i.getCaseValue(); // Do something. } If you want to convert case number to TerminatorInst successor index, just use getSuccessorIndex iterator's method. If you want initialize iterator from TerminatorInst successor index, use CaseIt::fromSuccessorIndex(...) method. There are also related changes in llvm-clients: klee and clang. llvm-svn: 152298
-
Daniel Dunbar authored
llvm-svn: 152289
-
Richard Smith authored
starting with an underscore is ill-formed. Since this rule rejects programs that were using <inttypes.h>'s macros, recover from this error by treating the ud-suffix as a separate preprocessing-token, with a DefaultError ExtWarn. The approach of treating such cases as two tokens is under discussion for standardization, but is in any case a conforming extension and allows existing codebases to keep building while the committee makes up its mind. Reword the warning on the definition of literal operators not starting with underscores (which are, strangely, legal) to more explicitly state that such operators can't be called by literals. Remove the special-case diagnostic for hexfloats, since it was both triggering in the wrong cases and incorrect. llvm-svn: 152287
-
Douglas Gregor authored
"false" for declarations that aren't members of classes. Fixes PR12106. llvm-svn: 152284
-
Daniel Dunbar authored
llvm-svn: 152281
-
Daniel Dunbar authored
builds. Sheesh. llvm-svn: 152279
-
Richard Smith authored
llvm-svn: 152277
-
Richard Trieu authored
to its own member function. llvm-svn: 152276
-
Argyrios Kyrtzidis authored
an #include entry that did not resolve to header file. Part of rdar://11007039 llvm-svn: 152275
-
Douglas Gregor authored
paren/brace/bracket tracking (the Consume* functions already did it), removing the use of ConsumeAnyToken(), and moving the hot paths inline with the error paths out-of-line. llvm-svn: 152274
-
Fariborz Jahanian authored
block variable. // rdar://10817031 llvm-svn: 152273
-
Anna Zaks authored
The final graph contains a single root node, which is a parent of all externally available functions(and 'main'). As well as a list of Parentless/Unreachable functions, which are either truly unreachable or are unreachable due to our analyses imprecision. The analyzer checkers debug.DumpCallGraph or debug.ViewGraph can be used to look at the produced graph. Currently, the graph is not very precise, for example, it entirely skips edges resulted from ObjC method calls. llvm-svn: 152272
-
Fariborz Jahanian authored
an uninitialized block variable is being called inside the block literal. // rdar://10817031 llvm-svn: 152271
-
Argyrios Kyrtzidis authored
Basically the current design is: -for an implementation method, show as overridden the interface method. This is not useful, and is inconsistent with the C++ side -for an interface method, show as overridden the protocols methods (this is desirable) and the methods from the categories; methods from categories are not useful since they are considered the same method (same USR). -If there is a protocol method or category method reported, it does not check the super class for overridden methods. This is really problematic since overridden methods from super class is what we want to give back. Change clang_getOverriddenCursors to show as overridden any method in the class's base class, its protocols, or its categories' protocols, that has the same selector and is of the same kind (class or instance). If no such method exists, the search continues to the class's superclass, its protocols, and its categories, and so on. A method from an Objective-C implementation is considered to override the same methods as its corresponding method in the interface. rdar://10967206 llvm-svn: 152270
-
Bob Wilson authored
PR12196: The module hash strings are not actually hashing the compiler version string; the entire version string is being included in the hash. Depending on the module cache directory name, that can lead to failures where the path names become too long. As a temporary workaround, just remove the version string from the hash. llvm-svn: 152266
-
- Mar 07, 2012
-
-
Richard Trieu authored
llvm-svn: 152239
-
Sebastian Redl authored
llvm-svn: 152231
-