]> granicus.if.org Git - clang/log
clang
12 years agoStringRef'ize Preprocessor::CreateString().
Dmitri Gribenko [Mon, 24 Sep 2012 21:07:17 +0000 (21:07 +0000)]
StringRef'ize Preprocessor::CreateString().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164555 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoReplace raw call to snprintf() by llvm streams.
Dmitri Gribenko [Mon, 24 Sep 2012 20:56:28 +0000 (20:56 +0000)]
Replace raw call to snprintf() by llvm streams.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164554 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoReplace an assertion with an error for empty __asm statements.
Bob Wilson [Mon, 24 Sep 2012 19:57:59 +0000 (19:57 +0000)]
Replace an assertion with an error for empty __asm statements.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164551 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoFix a comment typo and clean up formatting.
Bob Wilson [Mon, 24 Sep 2012 19:57:55 +0000 (19:57 +0000)]
Fix a comment typo and clean up formatting.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164550 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoMake sure that we don't end up making an #undef'd macro visible after
Douglas Gregor [Mon, 24 Sep 2012 19:56:18 +0000 (19:56 +0000)]
Make sure that we don't end up making an #undef'd macro visible after
the fact. Test cases will come when we're actually (de-)serializing
macro history.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164549 91177308-0d34-0410-b5e6-96231b3b80d8

12 years ago[libclang] Bring CXCursor_AsmStmt back as an alias for CXCursor_GCCAsmStmt.
Argyrios Kyrtzidis [Mon, 24 Sep 2012 19:27:20 +0000 (19:27 +0000)]
[libclang] Bring CXCursor_AsmStmt back as an alias for CXCursor_GCCAsmStmt.

This was renamed in r162632 which was badness because the C API needs to be stable.
rdar://12360096

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164547 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoInclude 'long long' extension warning in the LongLong group so that it can be
Dmitri Gribenko [Mon, 24 Sep 2012 19:05:10 +0000 (19:05 +0000)]
Include 'long long' extension warning in the LongLong group so that it can be
silenced by -Wno-long-long.  Thanks Richard Smith for the fix idea!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164546 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoChange the wording of the extension warning from
Dmitri Gribenko [Mon, 24 Sep 2012 18:19:21 +0000 (18:19 +0000)]
Change the wording of the extension warning from
> 'long long' is an extension when C99 mode is not enabled
to
> 'long long' is a C++11 extension
while compiling in C++98 mode.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164545 91177308-0d34-0410-b5e6-96231b3b80d8

12 years ago[analyzer] Really turn on dynamic-bifurcation on by default.
Anna Zaks [Mon, 24 Sep 2012 17:43:47 +0000 (17:43 +0000)]
[analyzer] Really turn on dynamic-bifurcation on by default.

Thanks to Byoungyoung for realizing taht we are not passing the default
option correctly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164543 91177308-0d34-0410-b5e6-96231b3b80d8

12 years ago[analyzer] Remove unused.
Anna Zaks [Mon, 24 Sep 2012 17:43:44 +0000 (17:43 +0000)]
[analyzer] Remove unused.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164542 91177308-0d34-0410-b5e6-96231b3b80d8

12 years ago[analyzer]Prevent infinite recursion(assume->checker:evalAssume->assume)
Anna Zaks [Mon, 24 Sep 2012 17:43:41 +0000 (17:43 +0000)]
[analyzer]Prevent infinite recursion(assume->checker:evalAssume->assume)

(Unfortunately, I do not have a good reduced test case for this.)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164541 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoUse an explicit target to test that source fortification is off when building for...
Alexander Potapenko [Mon, 24 Sep 2012 10:25:24 +0000 (10:25 +0000)]
Use an explicit target to test that source fortification is off when building for Darwin with -faddress-sanitizer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164485 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoSmall cleanup of literal semantic analysis: hiding 'char *' pointers behind
Dmitri Gribenko [Mon, 24 Sep 2012 09:53:54 +0000 (09:53 +0000)]
Small cleanup of literal semantic analysis: hiding 'char *' pointers behind
StringRef makes code cleaner.  Also, make the temporary buffer smaller:
512 characters is unreasonably large for integer literals.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164484 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoUpdate the Clang tests which run with a full optimization pipeline for
Chandler Carruth [Mon, 24 Sep 2012 01:10:25 +0000 (01:10 +0000)]
Update the Clang tests which run with a full optimization pipeline for
the new SROA pass. This is a benign change: the order of PHI nodes
changed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164481 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agounittests/AST/StmtPrinterTest.cpp: Suppress a LP64-assumed test, "0x100000000i128...
NAKAMURA Takumi [Mon, 24 Sep 2012 00:34:18 +0000 (00:34 +0000)]
unittests/AST/StmtPrinterTest.cpp: Suppress a LP64-assumed test, "0x100000000i128 => 4294967296L", for now.

LONG_MAX is 2147483647L on common 32 bit and LLP64 (Windows x64).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164478 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoAs a followup for r164303, add some tests for printing literals that test
Dmitri Gribenko [Sun, 23 Sep 2012 20:29:07 +0000 (20:29 +0000)]
As a followup for r164303, add some tests for printing literals that test
printing directly rather than through a complicated machinery of ObjC rewriter.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164477 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoImplement ToolChain::IsUnwindTablesDefault to reduce code duplication a bit.
Rafael Espindola [Sun, 23 Sep 2012 03:05:41 +0000 (03:05 +0000)]
Implement ToolChain::IsUnwindTablesDefault to reduce code duplication a bit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164473 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoOn Hexagon getArchName() never returns x86_64, simplify the function.
Rafael Espindola [Sat, 22 Sep 2012 22:58:57 +0000 (22:58 +0000)]
On Hexagon getArchName() never returns x86_64, simplify the function.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164470 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoUse pipes.
Rafael Espindola [Sat, 22 Sep 2012 22:51:00 +0000 (22:51 +0000)]
Use pipes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164469 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoUse FileCheck.
Rafael Espindola [Sat, 22 Sep 2012 22:30:04 +0000 (22:30 +0000)]
Use FileCheck.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164468 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoComment sema: warn when comment has \deprecated but declaration does not have a
Dmitri Gribenko [Sat, 22 Sep 2012 21:47:50 +0000 (21:47 +0000)]
Comment sema: warn when comment has \deprecated but declaration does not have a
deprecation attribute ('deprecated', 'availability' or 'unavailable').

This warning is under a separate flag, -Wdocumentation-deprecated-sync, so it
can be turned off easily while leaving other -Wdocumentation warnings on.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164467 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoRemove superfluous \namespace command.
Dmitri Gribenko [Sat, 22 Sep 2012 21:44:37 +0000 (21:44 +0000)]
Remove superfluous \namespace command.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164466 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoFix cindex.py compatibility with older libclang.so
Dmitri Gribenko [Sat, 22 Sep 2012 17:52:29 +0000 (17:52 +0000)]
Fix cindex.py compatibility with older libclang.so

The issue is that we were calling clang_getCompletionBriefComment
unconditionally.  New we check if this function is available before calling it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164464 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoUse FileCheck.
Rafael Espindola [Sat, 22 Sep 2012 15:26:38 +0000 (15:26 +0000)]
Use FileCheck.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164462 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoFix pr13749. There is still a lot of code using getArchName that should be
Rafael Espindola [Sat, 22 Sep 2012 15:04:11 +0000 (15:04 +0000)]
Fix pr13749. There is still a lot of code using getArchName that should be
using getArch, but I will try to fix them one at time to add tests.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164460 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoAvoid multiple atomic builtin declaration.
Abramo Bagnara [Sat, 22 Sep 2012 09:05:22 +0000 (09:05 +0000)]
Avoid multiple atomic builtin declaration.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164454 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoWhen importing a FunctionProtoType::ExtProtoInfo, its ExceptionSpecDecl can point...
Argyrios Kyrtzidis [Sat, 22 Sep 2012 01:58:06 +0000 (01:58 +0000)]
When importing a FunctionProtoType::ExtProtoInfo, its ExceptionSpecDecl can point to the
FunctionDecl that we are importing the FunctionProtoType for, in which case we'll have
infinite recursion when importing.

Initially create a FunctionProtoType with null ExceptionSpecDecl/ExceptionSpecTemplate and
update the type in ASTNodeImporter::VisitFunctionDecl after the FunctionDecl has been created.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164450 91177308-0d34-0410-b5e6-96231b3b80d8

12 years ago[analyzer] Suppress bugs whose paths go through the return of a null pointer.
Jordan Rose [Sat, 22 Sep 2012 01:25:06 +0000 (01:25 +0000)]
[analyzer] Suppress bugs whose paths go through the return of a null pointer.

This is a heuristic intended to greatly reduce the number of false
positives resulting from inlining, particularly inlining of generic,
defensive C++ methods that live in header files. The suppression is
triggered in the cases where we ask to track where a null pointer came
from, and it turns out that the source of the null pointer was an inlined
function call.

This change brings the number of bug reports in LLVM from ~1500 down to
around ~300, a much more manageable number. Yes, some true positives may
be hidden as well, but from what I looked at the vast majority of silenced
reports are false positives, and many of the true issues found by the
analyzer are still reported.

I'm hoping to improve this heuristic further by adding some exceptions
next week (cases in which a bug should still be reported).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164449 91177308-0d34-0410-b5e6-96231b3b80d8

12 years ago[analyzer] Track a null value back through FindLastStoreBRVisitor.
Jordan Rose [Sat, 22 Sep 2012 01:25:00 +0000 (01:25 +0000)]
[analyzer] Track a null value back through FindLastStoreBRVisitor.

Also, tidy up the other tracking visitors so that they mark the right
things as interesting and don't do extra work.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164448 91177308-0d34-0410-b5e6-96231b3b80d8

12 years ago[analyzer] Always allow BugReporterVisitors to see the bug path.
Jordan Rose [Sat, 22 Sep 2012 01:24:56 +0000 (01:24 +0000)]
[analyzer] Always allow BugReporterVisitors to see the bug path.

Before, PathDiagnosticConsumers that did not support actual path output
would (sensibly) cause the generation of the full path to be skipped.
However, BugReporterVisitors may want to see the path in order to mark a
BugReport as invalid.

Now, even for a path generation scheme of 'None' we will still create a
trimmed graph and walk backwards through the bug path, doing no work other
than passing the nodes to the BugReporterVisitors. This isn't cheap, but
it's necessary to properly do suppression when the first path consumer does
not support path notes.

In the future, we should try only generating the path and visitor-provided
path notes once, or at least only creating the trimmed graph once.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164447 91177308-0d34-0410-b5e6-96231b3b80d8

12 years ago[analyzer] Allow a BugReport to be marked "invalid" during path generation.
Jordan Rose [Sat, 22 Sep 2012 01:24:53 +0000 (01:24 +0000)]
[analyzer] Allow a BugReport to be marked "invalid" during path generation.

This is intended to allow visitors to make decisions about whether a
BugReport is likely a false positive. Currently there are no visitors
making use of this feature, so there are no tests.

When a BugReport is marked invalid, the invalidator must provide a key
that identifies the invaliation (intended to be the visitor type and a
context pointer of some kind). This allows us to reverse the decision
later on. Being able to reverse a decision about invalidation gives us more
flexibility, and allows us to formulate conditions like "this report is
invalid UNLESS the original argument is 'foo'". We can use this to
fine-tune our false-positive suppression (coming soon).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164446 91177308-0d34-0410-b5e6-96231b3b80d8

12 years ago[analyzer] Look through OpaqueValueExprs when tracking a nil value.
Jordan Rose [Sat, 22 Sep 2012 01:24:49 +0000 (01:24 +0000)]
[analyzer] Look through OpaqueValueExprs when tracking a nil value.

This allows us to show /why/ a particular object is nil, even when it is
wrapped in an OpaqueValueExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164445 91177308-0d34-0410-b5e6-96231b3b80d8

12 years ago[analyzer] Better path notes for null pointers passed as arguments.
Jordan Rose [Sat, 22 Sep 2012 01:24:46 +0000 (01:24 +0000)]
[analyzer] Better path notes for null pointers passed as arguments.

Rather than saying "Null pointer value stored to 'foo'", we now say
"Passing null pointer value via Nth parameter 'foo'", which is much better.
The note is also now on the argument expression as well, rather than the
entire call.

This paves the way for continuing to track arguments back to their sources.

<rdar://problem/12211490>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164444 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoUse llvm::getOrdinalSuffix to print ordinal numbers in diagnostics.
Jordan Rose [Sat, 22 Sep 2012 01:24:42 +0000 (01:24 +0000)]
Use llvm::getOrdinalSuffix to print ordinal numbers in diagnostics.

Just a refactoring of common infrastructure. No intended functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164443 91177308-0d34-0410-b5e6-96231b3b80d8

12 years ago[analyzer] Check that an ObjCIvarRefExpr's base is non-null even as an lvalue.
Jordan Rose [Sat, 22 Sep 2012 01:24:38 +0000 (01:24 +0000)]
[analyzer] Check that an ObjCIvarRefExpr's base is non-null even as an lvalue.

Like with struct fields, we want to catch cases like this early,
so that we can produce better diagnostics and path notes:

  PointObj *p = nil;
  int *px = &p->_x; // should warn here
  *px = 1;

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164442 91177308-0d34-0410-b5e6-96231b3b80d8

12 years ago[analyzer] Check that a member expr is valid even when the result is an lvalue.
Jordan Rose [Sat, 22 Sep 2012 01:24:33 +0000 (01:24 +0000)]
[analyzer] Check that a member expr is valid even when the result is an lvalue.

We want to catch cases like this early, so that we can produce better
diagnostics and path notes:

  Point *p = 0;
  int *px = &p->x; // should warn here
  *px = 1;

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164441 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoFix bug which sometimes resulted in further diagnostics being produced after a
Richard Smith [Sat, 22 Sep 2012 00:53:56 +0000 (00:53 +0000)]
Fix bug which sometimes resulted in further diagnostics being produced after a
fatal error. Previously, if a fatal error was followed by a diagnostic which
was suppressed due to a SFINAETrap, we'd forget that we'd seen a fatal error.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164437 91177308-0d34-0410-b5e6-96231b3b80d8

12 years ago[ms-inline asm] Use mnemonicIsValid() in a helpful assert.
Chad Rosier [Fri, 21 Sep 2012 22:22:39 +0000 (22:22 +0000)]
[ms-inline asm] Use mnemonicIsValid() in a helpful assert.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164421 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoMark the passed in "self" for a block as an object pointer so
Eric Christopher [Fri, 21 Sep 2012 22:18:42 +0000 (22:18 +0000)]
Mark the passed in "self" for a block as an object pointer so
that the backend can mark it as the representative pointer for
the block.

rdar://12001329

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164418 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoFix build errors.
Argyrios Kyrtzidis [Fri, 21 Sep 2012 22:17:13 +0000 (22:17 +0000)]
Fix build errors.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164417 91177308-0d34-0410-b5e6-96231b3b80d8

12 years ago[AST importer] Do a correct import of a FunctionProtoType::ExtProtoInfo, don't pass
Argyrios Kyrtzidis [Fri, 21 Sep 2012 22:04:02 +0000 (22:04 +0000)]
[AST importer] Do a correct import of a FunctionProtoType::ExtProtoInfo, don't pass
nodes from the imported ASTContext.

rdar://12348924

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164416 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoobjective-C: when diagnosing deprecated/unavailable usage of
Fariborz Jahanian [Fri, 21 Sep 2012 20:46:37 +0000 (20:46 +0000)]
objective-C: when diagnosing deprecated/unavailable usage of
setter or getter backing a deprecated/unavailable property,
also not location of the property. // rdar://12324295

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164412 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoCall CGM.SetLLVMFunctionAttributesForDefinition on thunks so that they get
Rafael Espindola [Fri, 21 Sep 2012 20:39:32 +0000 (20:39 +0000)]
Call CGM.SetLLVMFunctionAttributesForDefinition on thunks so that they get
attributes like uwtable. Without uwtable a stack unwinder would be unable
to go past the thunks.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164411 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoAdd four new command line options for MIPS CPU selection:
Simon Atanasyan [Fri, 21 Sep 2012 20:19:32 +0000 (20:19 +0000)]
Add four new command line options for MIPS CPU selection:
-mips32, -mips32r2, -mips64, -mips64r2.

The patch reviewed by Eric Christopher.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164410 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoFix a typo in the PCH internals documentation
Douglas Gregor [Fri, 21 Sep 2012 20:16:09 +0000 (20:16 +0000)]
Fix a typo in the PCH internals documentation

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164409 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoExperiment in BodyFarm of structuring AST creation calls in a hierarchy,
Ted Kremenek [Fri, 21 Sep 2012 18:33:56 +0000 (18:33 +0000)]
Experiment in BodyFarm of structuring AST creation calls in a hierarchy,
so that they visually look like an AST dump.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164401 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoCreate helper method in BodyFarm for creating simple assignments.
Ted Kremenek [Fri, 21 Sep 2012 18:33:54 +0000 (18:33 +0000)]
Create helper method in BodyFarm for creating simple assignments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164400 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoAdd helper method in BodyFarm to create unary dereferences.
Ted Kremenek [Fri, 21 Sep 2012 18:33:52 +0000 (18:33 +0000)]
Add helper method in BodyFarm to create unary dereferences.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164399 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoAdd helper method to BodyFarm for creating lvalue-to-rvalue conversions.
Ted Kremenek [Fri, 21 Sep 2012 18:13:27 +0000 (18:13 +0000)]
Add helper method to BodyFarm for creating lvalue-to-rvalue conversions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164397 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoAdd helper method to BodyFarm for creatinging integral casts.
Ted Kremenek [Fri, 21 Sep 2012 18:13:23 +0000 (18:13 +0000)]
Add helper method to BodyFarm for creatinging integral casts.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164396 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoThread-safety analysis: better handling of unreachable blocks. Fixes a bug
DeLesley Hutchins [Fri, 21 Sep 2012 17:57:00 +0000 (17:57 +0000)]
Thread-safety analysis: better handling of unreachable blocks.  Fixes a bug
where a call to function marked 'noreturn' is followed by unreachable
implicit destructor calls.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164394 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoRe-enable faux-bodies by default.
Ted Kremenek [Fri, 21 Sep 2012 17:55:34 +0000 (17:55 +0000)]
Re-enable faux-bodies by default.

Try this again, now that r164392 is in place.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164393 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoUse helper method to create DeclRefExprs in BodyFarm, hopefully allevating
Ted Kremenek [Fri, 21 Sep 2012 17:54:35 +0000 (17:54 +0000)]
Use helper method to create DeclRefExprs in BodyFarm, hopefully allevating
them being correctly constructed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164392 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoAdd some structuring comments. No functionality change.
Ted Kremenek [Fri, 21 Sep 2012 17:54:32 +0000 (17:54 +0000)]
Add some structuring comments.  No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164391 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoUpdate comment.
Chad Rosier [Fri, 21 Sep 2012 17:50:09 +0000 (17:50 +0000)]
Update comment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164390 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoUse MapVectors to make the order we mark virtual functions used by a vtable
Rafael Espindola [Fri, 21 Sep 2012 17:15:24 +0000 (17:15 +0000)]
Use MapVectors to make the order we mark virtual functions used by a vtable
deterministic. Fixes pr13868.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164382 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoUpdate for encapsulating the "construct*AlignmentFromInt" methods.
Bill Wendling [Fri, 21 Sep 2012 16:07:49 +0000 (16:07 +0000)]
Update for encapsulating the "construct*AlignmentFromInt" methods.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164374 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoRevert r164364, "Flip "faux-bodies" in the analyzer on by default to flush out bugs."
NAKAMURA Takumi [Fri, 21 Sep 2012 12:00:42 +0000 (12:00 +0000)]
Revert r164364, "Flip "faux-bodies" in the analyzer on by default to flush out bugs."

It crashed test/Analysis/Output/blocks.m on some hosts.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164368 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoMake warnings about uninitialized fields include the field name.
Hans Wennborg [Fri, 21 Sep 2012 08:58:33 +0000 (08:58 +0000)]
Make warnings about uninitialized fields include the field name.

This makes the wording more informative, and consistent with the other
warnings about uninitialized variables.

Also, me and David who reviewed this couldn't figure out why we would
need to do a lookup to get the name of the variable; so just print the
name directly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164366 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoFlip "faux-bodies" in the analyzer on by default to flush out bugs.
Ted Kremenek [Fri, 21 Sep 2012 06:14:37 +0000 (06:14 +0000)]
Flip "faux-bodies" in the analyzer on by default to flush out bugs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164364 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoSimplify getRuntimeDefinition() back to taking no arguments.
Ted Kremenek [Fri, 21 Sep 2012 06:13:13 +0000 (06:13 +0000)]
Simplify getRuntimeDefinition() back to taking no arguments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164363 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoDoxygen-ify a comment.
Craig Topper [Fri, 21 Sep 2012 04:33:26 +0000 (04:33 +0000)]
Doxygen-ify a comment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164360 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoPR13890: Warn on abstract final classes.
David Blaikie [Fri, 21 Sep 2012 03:21:07 +0000 (03:21 +0000)]
PR13890: Warn on abstract final classes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164359 91177308-0d34-0410-b5e6-96231b3b80d8

12 years ago[PCH] After deserializing a DeclContext, if it has external lexical decls but not
Argyrios Kyrtzidis [Fri, 21 Sep 2012 01:30:00 +0000 (01:30 +0000)]
[PCH] After deserializing a DeclContext, if it has external lexical decls but not
external visible decls, call DeclContext::setMustBuildLookupTable so that the
"lazy decls" bit of the LookupPtr is set.

Previously, in non-C++, if there were no new declarations causing the "lazy decls" bit
to be set, then DeclContext::lookups_begin() would fail to return the decls from the PCH.

Fixes rdar://12316296.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164351 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoAdd faux-body support for dispatch_once().
Ted Kremenek [Fri, 21 Sep 2012 00:52:24 +0000 (00:52 +0000)]
Add faux-body support for dispatch_once().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164348 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoARM: Use a dedicated intrinsic for vector bitwise select.
Jim Grosbach [Fri, 21 Sep 2012 00:18:30 +0000 (00:18 +0000)]
ARM: Use a dedicated intrinsic for vector bitwise select.

The expression based expansion too often results in IR level optimizations
splitting the intermediate values into separate basic blocks, preventing
the formation of the VBSL instruction as the code author intended. In
particular, LICM would often hoist part of the computation out of a loop.

rdar://11011471

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164342 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoTidy up. Trailing whitespace and 80 columns.
Jim Grosbach [Fri, 21 Sep 2012 00:18:27 +0000 (00:18 +0000)]
Tidy up. Trailing whitespace and 80 columns.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164341 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoImplement faux-body-synthesis of well-known functions in the static analyzer when
Ted Kremenek [Fri, 21 Sep 2012 00:09:11 +0000 (00:09 +0000)]
Implement faux-body-synthesis of well-known functions in the static analyzer when
their implementations are unavailable.  Start by simulating dispatch_sync().

This change is largely a bunch of plumbing around something very simple.  We
use AnalysisDeclContext to conjure up a fake function body (using the
current ASTContext) when one does not exist.  This is controlled
under the analyzer-config option "faux-bodies", which is off by default.

The plumbing in this patch is largely to pass the necessary machinery
around.  CallEvent needs the AnalysisDeclContextManager to get
the function definition, as one may get conjured up lazily.

BugReporter and PathDiagnosticLocation needed to be relaxed to handle
invalid locations, as the conjured body has no real source locations.
We do some primitive recovery in diagnostic generation to generate
some reasonable locations (for arrows and events), but it can be
improved.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164339 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoConstify method.
Ted Kremenek [Fri, 21 Sep 2012 00:09:05 +0000 (00:09 +0000)]
Constify method.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164338 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoEnsure that the Decl* wrapped by an AnalysisDeclContext cannot be changed after
Ted Kremenek [Fri, 21 Sep 2012 00:09:03 +0000 (00:09 +0000)]
Ensure that the Decl* wrapped by an AnalysisDeclContext cannot be changed after
construction.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164337 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoRemove unused fields.
Ted Kremenek [Fri, 21 Sep 2012 00:09:01 +0000 (00:09 +0000)]
Remove unused fields.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164336 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoSerialize the 'IsConstexpr' bit of VarDecls. Fixes <rdar://problem/12328814>.
Douglas Gregor [Thu, 20 Sep 2012 23:43:29 +0000 (23:43 +0000)]
Serialize the 'IsConstexpr' bit of VarDecls. Fixes <rdar://problem/12328814>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164335 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoThread-safety analysis: fix bug where shared trylock was treated
DeLesley Hutchins [Thu, 20 Sep 2012 23:14:43 +0000 (23:14 +0000)]
Thread-safety analysis: fix bug where shared trylock was treated
as exclusive.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164332 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoThread safety analysis: properly canonicalize calls to virtual methods within
DeLesley Hutchins [Thu, 20 Sep 2012 22:18:02 +0000 (22:18 +0000)]
Thread safety analysis: properly canonicalize calls to virtual methods within
lock expressions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164324 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoIf the range in a for range statement doesn't have a viable begin/end function,
Richard Smith [Thu, 20 Sep 2012 21:52:32 +0000 (21:52 +0000)]
If the range in a for range statement doesn't have a viable begin/end function,
but can be dereferenced to form an expression which does have viable begin/end
functions, then typo-correct the range, even if something else goes wrong with
the statement (such as inaccessible begin/end or the wrong type of loop
variable).

In order to ensure we recover correctly and produce any followup diagnostics in
this case, redo semantic analysis on the for-range statement outside of the
diagnostic trap, after issuing the typo-correction.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164323 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoFix typo. (s/Explided/Exploded/)
David Blaikie [Thu, 20 Sep 2012 20:59:21 +0000 (20:59 +0000)]
Fix typo. (s/Explided/Exploded/)

Patch by Sean McBride.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164318 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoImprovements to my patch in r164143 per
Fariborz Jahanian [Thu, 20 Sep 2012 19:36:41 +0000 (19:36 +0000)]
Improvements to my patch in r164143 per
Richard's comments. // rdar://12202422

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164316 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoMake the wchar_t promotion test consistent across different hosts by specifying a...
David Blaikie [Thu, 20 Sep 2012 18:57:53 +0000 (18:57 +0000)]
Make the wchar_t promotion test consistent across different hosts by specifying a target triple.

This test behavior differs depending (at least) on whether
sizeof(wchar_t) == sizeof(int) or not.

When they are equal, the first redeclaration will fail because decltype(+L'x')
is unsigned int instead of the expected int. This occurs on ARM.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164315 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoRemove a test that is non-portable (cannot be execute on cross builds, for example)
David Blaikie [Thu, 20 Sep 2012 18:42:02 +0000 (18:42 +0000)]
Remove a test that is non-portable (cannot be execute on cross builds, for example)

While it might be nice to have a quick end-to-end sanity test, it's just not
really the right place for it & would require more work to enable lit to
provide a detection flag ("XFAIL: cross" or similar) than the value we get from
having this test. Early on it might've made more sense, but these days we've
got some pretty good coverage across the stack with more targeted tests.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164314 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoInclude types when a definition's type differs from a prior declaration.
David Blaikie [Thu, 20 Sep 2012 18:38:57 +0000 (18:38 +0000)]
Include types when a definition's type differs from a prior declaration.

This is some really old code (took me a while to find the test cases) & the
diagnostic text is slightly incorrect (it should really only apply to
re/declarations/, redefinitions are an error regardless of whether the types
match). Not sure if anyone cares about it, though.

For now this just makes the diagnostic more clear in less obvious cases where
the type of a declaration might not be explicitly written (eg: because it
uses decltype)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164313 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoAdd some matchers for basic AST nodes.
Daniel Jasper [Thu, 20 Sep 2012 14:12:57 +0000 (14:12 +0000)]
Add some matchers for basic AST nodes.

Patch by Gábor Horváth.
Review: http://llvm-reviews.chandlerc.com/D45

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164304 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoStmtPrinter: Print floating point literals with the right suffix to disambiguate...
Benjamin Kramer [Thu, 20 Sep 2012 14:07:17 +0000 (14:07 +0000)]
StmtPrinter: Print floating point literals with the right suffix to disambiguate them from integers.

Based on a patch by Olaf Krzikalla, UDL fixes by me.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164303 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoBe more consistent about ending suggestions with a '?'
Nico Weber [Thu, 20 Sep 2012 13:02:00 +0000 (13:02 +0000)]
Be more consistent about ending suggestions with a '?'

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164301 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoclang/test/Analysis: Fix the declaration of strlen() for 32 bit targets.
NAKAMURA Takumi [Thu, 20 Sep 2012 11:03:56 +0000 (11:03 +0000)]
clang/test/Analysis: Fix the declaration of strlen() for 32 bit targets.

  - Inputs/system-header-simulator.h: Declare strlen() with size_t.

  - malloc-interprocedural.c: Move the definition of size_t into the header above.

Then XFAIL can be pruned.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164300 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoDisable source fortification on Darwin with AddressSanitizer.
Alexander Potapenko [Thu, 20 Sep 2012 10:10:01 +0000 (10:10 +0000)]
Disable source fortification on Darwin with AddressSanitizer.

ASan doesn't play well with -D_FORTIFY_SOURCE, which is enabled by default starting at OS X 10.7

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164299 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoProvide better error messages for incorrect matchers.
Daniel Jasper [Thu, 20 Sep 2012 09:24:58 +0000 (09:24 +0000)]
Provide better error messages for incorrect matchers.

By changing the conversion operator into a conversion constructor, we
can enabled based on the template parameters leading to better error
messages. E.g.: stmt(decl()) will now create an error message including:

  note: candidate function not viable: no known conversion from
  'clang::ast_matchers::internal::BindableMatcher<clang::Decl>' to 'const
  clang::ast_matchers::internal::Matcher<clang::Stmt>' for 1st argument

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164298 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agotest/Analysis/malloc-interprocedural.c: Mark it as XFAIL: cygwin,mingw,msvc for now...
NAKAMURA Takumi [Thu, 20 Sep 2012 08:44:12 +0000 (08:44 +0000)]
test/Analysis/malloc-interprocedural.c: Mark it as XFAIL: cygwin,mingw,msvc for now. Investigating.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164295 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoThe keywords "true" and "false" shouldn't warn under -Wundef.
Eli Friedman [Thu, 20 Sep 2012 02:38:38 +0000 (02:38 +0000)]
The keywords "true" and "false" shouldn't warn under -Wundef.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164279 91177308-0d34-0410-b5e6-96231b3b80d8

12 years ago[analyzer] MallocChecker should not do post-call checks on inlined functions.
Jordan Rose [Thu, 20 Sep 2012 01:55:32 +0000 (01:55 +0000)]
[analyzer] MallocChecker should not do post-call checks on inlined functions.

If someone provides their own function called 'strdup', or 'reallocf', or
even 'malloc', and we inlined it, the inlining should have given us all the
malloc-related information we need. If we then try to attach new information
to the return value, we could end up with spurious warnings.

<rdar://problem/12317671>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164276 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoRevert "[analyzer] Remove constraints on dead symbols as part of removeDeadBindings."
Jordan Rose [Thu, 20 Sep 2012 01:54:56 +0000 (01:54 +0000)]
Revert "[analyzer] Remove constraints on dead symbols as part of removeDeadBindings."

While we definitely want this optimization in the future, we're not
currently handling constraints on symbolic /expressions/ correctly.
These should stay live even if the SymExpr itself is no longer referenced
because could recreate an identical SymExpr later. Only once the SymExpr
can no longer be recreated -- i.e. a component symbol is dead -- can we
safely remove the constraints on it.

This liveness issue is tracked by <rdar://problem/12333297>.

This reverts r163444 / 24c7f98828e039005cff3bd847e7ab404a6a09f8.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164275 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoHandle lambdas where the lambda-declarator is an explicit "(void)". PR13854.
Eli Friedman [Thu, 20 Sep 2012 01:40:23 +0000 (01:40 +0000)]
Handle lambdas where the lambda-declarator is an explicit "(void)".  PR13854.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164274 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoPer C++11 [class.friend]p3, the 'friend' keyword must appear first in a
Richard Smith [Thu, 20 Sep 2012 01:31:00 +0000 (01:31 +0000)]
Per C++11 [class.friend]p3, the 'friend' keyword must appear first in a
non-function friend declaration. Patch by Josh Magee!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164273 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoPR13881: Add -Wzero-length-array for zero length array extension, and move it into...
Richard Smith [Thu, 20 Sep 2012 01:02:05 +0000 (01:02 +0000)]
PR13881: Add -Wzero-length-array for zero length array extension, and move it into -Wgnu.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164272 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoFix a small FIXME involving template partial ordering and
Eli Friedman [Wed, 19 Sep 2012 23:52:13 +0000 (23:52 +0000)]
Fix a small FIXME involving template partial ordering and
member function templates with an rvalue ref qualifier.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164267 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoFix function template partial ordering rules for static vs. non-static
Eli Friedman [Wed, 19 Sep 2012 23:27:04 +0000 (23:27 +0000)]
Fix function template partial ordering rules for static vs. non-static
functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164263 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoccc-analyzer: pass -stdlib=libc++ through to the analyzer.
Benjamin Kramer [Wed, 19 Sep 2012 22:56:24 +0000 (22:56 +0000)]
ccc-analyzer: pass -stdlib=libc++ through to the analyzer.

Otherwise clang can't analyze code that relies on features provided by libc++.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164262 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoGrammar.
Eric Christopher [Wed, 19 Sep 2012 22:40:44 +0000 (22:40 +0000)]
Grammar.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164260 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoUpdate and expand comment.
Eric Christopher [Wed, 19 Sep 2012 22:01:42 +0000 (22:01 +0000)]
Update and expand comment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164254 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoHandle a captured this for the debug information as well.
Eric Christopher [Wed, 19 Sep 2012 21:47:34 +0000 (21:47 +0000)]
Handle a captured this for the debug information as well.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164253 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoFix awkward comment.
Eric Christopher [Wed, 19 Sep 2012 21:47:29 +0000 (21:47 +0000)]
Fix awkward comment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164252 91177308-0d34-0410-b5e6-96231b3b80d8