]> granicus.if.org Git - clang/log
clang
12 years agoLink to crtend.S when PIE in the FreeBSD driver. Patch by Brooks Davis!
Roman Divacky [Fri, 7 Sep 2012 13:36:21 +0000 (13:36 +0000)]
Link to crtend.S when PIE in the FreeBSD driver. Patch by Brooks Davis!

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

12 years agoAdds a first iteration of the basic AST matcher documentation landing page.
Manuel Klimek [Fri, 7 Sep 2012 13:13:53 +0000 (13:13 +0000)]
Adds a first iteration of the basic AST matcher documentation landing page.

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

12 years agoIntroduces anchors into LibASTMatchersReference.html.
Manuel Klimek [Fri, 7 Sep 2012 13:10:32 +0000 (13:10 +0000)]
Introduces anchors into LibASTMatchersReference.html.

This allows linking to LibASTMatchersRefernce.html#<matcher><N>Anchor to
link to the N'the declaration of a matcher and automatically expand
its documentation.

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

12 years agoChange the behavior of the isDerivedFrom-matcher to not match on the
Daniel Jasper [Fri, 7 Sep 2012 12:48:17 +0000 (12:48 +0000)]
Change the behavior of the isDerivedFrom-matcher to not match on the
class itself. This caused some confusion (intuitively, a class is not
derived from itself) and makes it hard to write certain matchers, e.g.
"match and bind any pair of base and subclass".

The original behavior can be achieved with a new isA-matcher.  Similar
to all other matchers, this matcher has the same behavior and name as
the corresponding AST-entity - in this case the isa<>() function.

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

12 years agoImplements hasAncestor.
Manuel Klimek [Fri, 7 Sep 2012 09:26:10 +0000 (09:26 +0000)]
Implements hasAncestor.

Implements the hasAncestor matcher. This builds
on the previous patch that introduced DynTypedNode to build up
a parent map for an additional degree of freedom in the AST traversal.

The map is only built once we hit an hasAncestor matcher, in order
to not slow down matching for cases where this is not needed.

We could implement some speed-ups for special cases, like building up
the parent map as we go and only building up the full map if we break
out of the already visited part of the tree, but that is probably
not going to be worth it, and would make the code significantly more
complex.

Major TODOs are:
- implement hasParent
- implement type traversal
- implement memoization in hasAncestor

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

12 years agoRevert "Rework the retain-release.m test to use FileCheck and the "text" output"
Ted Kremenek [Fri, 7 Sep 2012 07:40:40 +0000 (07:40 +0000)]
Revert "Rework the retain-release.m test to use FileCheck and the "text" output"

Apparently the output of this test is not deterministic.  Needs investigation.

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

12 years agoFix off-by-one bug in diagnostic prose of ObjCContainersASTChecker.
Ted Kremenek [Fri, 7 Sep 2012 07:13:08 +0000 (07:13 +0000)]
Fix off-by-one bug in diagnostic prose of ObjCContainersASTChecker.
While the check itself should count 0-based for the parameter index,
the diagnostic should be 1-based (first, second, third, not start at 0).

Fixes <rdar://problem/12249569>.

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

12 years agoExplodedGraph::shouldCollectNode() should not collect nodes for non-Expr Stmts
Ted Kremenek [Fri, 7 Sep 2012 06:56:18 +0000 (06:56 +0000)]
ExplodedGraph::shouldCollectNode() should not collect nodes for non-Expr Stmts
(as this previously was the case before this was refactored).  We also shouldn't
need to specially handle BinaryOperators since the eagerly-assume heuristic tags
such nodes.

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

12 years agoRework the retain-release.m test to use FileCheck and the "text" output
Ted Kremenek [Fri, 7 Sep 2012 06:51:47 +0000 (06:51 +0000)]
Rework the retain-release.m test to use FileCheck and the "text" output
of the analyzer, as the RetainReleaseChecker has many fine-grain
path diagnostic events that were not being checked.  This uncovered
an inconsistency between the path diagnostics between Objective-C
and Objective-C++ code in ConditionBRVisitor that was fixed in a recent
patch.

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

12 years agoFix bug in ConditionBRVisitor where for C++ (and not C) we were not ignoring
Ted Kremenek [Fri, 7 Sep 2012 06:51:37 +0000 (06:51 +0000)]
Fix bug in ConditionBRVisitor where for C++ (and not C) we were not ignoring
implicit pointer-to-boolean conversions in condition expressions.  This would
result in inconsistent diagnostic emission between C and C++.

A consequence of this is now ConditionBRVisitor and TrackConstraintBRVisitor may
emit redundant diagnostics, for example:

  "Assuming pointer value is null" (TrackConstraintBRVisitor)
  "Assuming 'p' is null" (ConditionBRVisitor)

We need to reconcile the two, and perhaps prefer one over the other in some
cases.

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

12 years agoPR9023: A template template parameter whose template parameter list contains an
Richard Smith [Fri, 7 Sep 2012 02:06:42 +0000 (02:06 +0000)]
PR9023: A template template parameter whose template parameter list contains an
unexpanded parameter pack is a pack expansion. Thus, as with a non-type template
parameter which is a pack expansion, it needs to be expanded early into a fixed
list of template parameters.

Since the expanded list of template parameters is not itself a parameter pack,
it is permitted to appear before the end of the template parameter list, so also
remove that restriction (for both template template parameter pack expansions and
non-type template parameter pack expansions).

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

12 years ago[analyzer] Fail gracefully when the dynamic type is outside the hierarchy.
Jordan Rose [Fri, 7 Sep 2012 01:19:42 +0000 (01:19 +0000)]
[analyzer] Fail gracefully when the dynamic type is outside the hierarchy.

With some particularly evil casts, we can get an object whose dynamic type
is not actually a subclass of its static type. In this case, we won't even
find the statically-resolved method as a devirtualization candidate.

Rather than assert that this situation cannot occur, we now simply check
that the dynamic type is not an ancestor or descendent of the static type,
and leave it at that.

This error actually occurred analyzing LLVM: CallEventManager uses a
BumpPtrAllocator to allocate a concrete subclass of CallEvent
(FunctionCall), but then casts it to the actual subclass requested
(such as ObjCMethodCall) to perform the constructor.

Yet another crash in PR13763.

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

12 years agoTeach RetainCountChecker that CFPlugInInstanceCreate does not
Ted Kremenek [Thu, 6 Sep 2012 23:47:02 +0000 (23:47 +0000)]
Teach RetainCountChecker that CFPlugInInstanceCreate  does not
return a CF object at all.

Fixes <rdar://problem/9566345>

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

12 years ago[analyzer] Don't crash if we cache out while evaluating an ObjC message.
Jordan Rose [Thu, 6 Sep 2012 23:44:36 +0000 (23:44 +0000)]
[analyzer] Don't crash if we cache out while evaluating an ObjC message.

A bizarre series of coincidences led us to generate a previously-seen
node in the middle of processing an Objective-C message, where we assume
the receiver is non-nil. We were assuming that such an assumption would
never "cache out" like this, and blithely went on using a null ExplodedNode
as the predecessor for the next step in evaluation.

Although the test case committed here is complicated, this could in theory
happen in other ways as well, so the correct fix is just to test if the
non-nil assumption results in an ExplodedNode we've seen before.

<rdar://problem/12243648>

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

12 years ago[analyzer] Assert that StmtPoint should be created with a non-null Stmt.
Anna Zaks [Thu, 6 Sep 2012 23:30:29 +0000 (23:30 +0000)]
[analyzer] Assert that StmtPoint should be created with a non-null Stmt.

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

12 years ago[analyzer] testing: add a build mode to allow C++11 testing.
Anna Zaks [Thu, 6 Sep 2012 23:30:27 +0000 (23:30 +0000)]
[analyzer] testing: add a build mode to allow C++11 testing.

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

12 years agoRefine diagnostics for leaks reported when returning an object
Ted Kremenek [Thu, 6 Sep 2012 23:03:07 +0000 (23:03 +0000)]
Refine diagnostics for leaks reported when returning an object
via function/method with [CF,NS]_RETURNS_NOT_RETAINED.

Fixes <rdar://problem/11379000>.

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

12 years agoTweak DeadStoresChecker to not warn about dead stores to variables that
Ted Kremenek [Thu, 6 Sep 2012 22:32:48 +0000 (22:32 +0000)]
Tweak DeadStoresChecker to not warn about dead stores to variables that
are used in EH code.  Right now the CFG doesn't support exceptions well,
so we need this hack to avoid bogus dead store warnings.

Fixes <rdar://problem/12147586>

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

12 years agoClarified diagnostics for range-based for loops with invalid ranges
Sam Panzer [Thu, 6 Sep 2012 21:50:08 +0000 (21:50 +0000)]
Clarified diagnostics for range-based for loops with invalid ranges

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

12 years ago[analyzer] Don't attempt to devirtualize calls to base class destructors.
Jordan Rose [Thu, 6 Sep 2012 20:37:08 +0000 (20:37 +0000)]
[analyzer] Don't attempt to devirtualize calls to base class destructors.

CXXDestructorCall now has a flag for when it is a base destructor call.
Other kinds of destructor calls (locals, fields, temporaries, and 'delete')
all behave as "whole-object" destructors and do not behave differently
from one another (specifically, in these cases we /should/ try to
devirtualize a call to a virtual destructor).

This was causing crashes in both our internal buildbot, the crash still
being tracked in PR13765, and some of the crashes being tracked in PR13763,
due to a assertion failure. (The behavior under -Asserts happened to be
correct anyway.)

Adding this knowledge also allows our DynamicTypePropagation checker to do
a bit less work; the special rules about virtual method calls during a
destructor only require extra handling during base destructors.

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

12 years ago[ms-inline asm] Output empty asm statements for the directives we don't
Chad Rosier [Thu, 6 Sep 2012 19:56:25 +0000 (19:56 +0000)]
[ms-inline asm] Output empty asm statements for the directives we don't
handle.  Otherwise, the AsmParser will explode if we try to generate an
object files.

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

12 years ago[ms-inline asm] The IR representation of inline assembly enumerates the input
Chad Rosier [Thu, 6 Sep 2012 19:35:00 +0000 (19:35 +0000)]
[ms-inline asm] The IR representation of inline assembly enumerates the input
and output expressions much like that in GNU-style inline assembly. Output
expressions are first.  Do this for MS-style inline asms.

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

12 years agorefactoring + objective-C specific test for my last patch.
Fariborz Jahanian [Thu, 6 Sep 2012 18:38:58 +0000 (18:38 +0000)]
refactoring + objective-C specific test for my last patch.
// rdar://12233989

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

12 years agoDon't try to check override control for invalid member functions. Fixes a crash in...
Richard Smith [Thu, 6 Sep 2012 18:32:18 +0000 (18:32 +0000)]
Don't try to check override control for invalid member functions. Fixes a crash in a corner case. Patch by Olivier Goffart!

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

12 years agoUse custom ABIInfo for le32/PNaCl argument codegen
Derek Schuff [Thu, 6 Sep 2012 17:37:28 +0000 (17:37 +0000)]
Use custom ABIInfo for le32/PNaCl argument codegen

This patch uses a new ABIInfo implementation specific to the le32
target, rather than falling back to DefaultABIInfo. Its behavior is
basically the same, but it also allows the regparm argument attribute.
It also includes basic tests for argument codegen and attributes.

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

12 years agoEnabling the UTF conversion routines that were previously conditionally ifdef'ed...
Enrico Granata [Thu, 6 Sep 2012 17:03:42 +0000 (17:03 +0000)]
Enabling the UTF conversion routines that were previously conditionally ifdef'ed out. This change is required to support enhancements in the LLDB data formatters

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

12 years agoFixing the return type information for objc_sync_enter and objc_sync_exit. Patch...
Aaron Ballman [Thu, 6 Sep 2012 16:44:16 +0000 (16:44 +0000)]
Fixing the return type information for objc_sync_enter and objc_sync_exit.  Patch thanks to Joe Ranieri!

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

12 years agoc: make __attribute__((unused)) transitive.
Fariborz Jahanian [Thu, 6 Sep 2012 16:43:18 +0000 (16:43 +0000)]
c: make __attribute__((unused)) transitive.
   Don't warn if annotated decl is used inside another
   unused. // rdar://12233989

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

12 years agoTighten up regexps some more.
Jakob Stoklund Olesen [Thu, 6 Sep 2012 16:29:03 +0000 (16:29 +0000)]
Tighten up regexps some more.

These tests were failing for me because the .* was greedily matching up
to the /libexec/ld-elf.so.1" later on the same line.

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

12 years agoRemove unused typedefs. Found by gcc48.
Roman Divacky [Thu, 6 Sep 2012 16:14:37 +0000 (16:14 +0000)]
Remove unused typedefs. Found by gcc48.

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

12 years agoDont cast away const needlessly. Found by gcc48 -Wcast-qual.
Roman Divacky [Thu, 6 Sep 2012 15:59:27 +0000 (15:59 +0000)]
Dont cast away const needlessly. Found by gcc48 -Wcast-qual.

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

12 years agoUpdate AddressSanitizer docs
Alexey Samsonov [Thu, 6 Sep 2012 09:49:03 +0000 (09:49 +0000)]
Update AddressSanitizer docs

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

12 years agoFix a mistake in an HTML example code snippet.
Jordan Rose [Thu, 6 Sep 2012 02:19:13 +0000 (02:19 +0000)]
Fix a mistake in an HTML example code snippet.

Caught by Kurt Arnlund!

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

12 years agoPR13775: When checking for a tag type being shadowed by some other declaration,
Richard Smith [Thu, 6 Sep 2012 01:37:56 +0000 (01:37 +0000)]
PR13775: When checking for a tag type being shadowed by some other declaration,
don't trample over the caller's LookupResult in the case where the check fails.

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

12 years ago[analyzer] Enhance the member expr tracking to account for references.
Anna Zaks [Wed, 5 Sep 2012 23:41:54 +0000 (23:41 +0000)]
[analyzer] Enhance the member expr tracking to account for references.

As per Jordan's suggestion. (Came out of code review for r163261.)

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

12 years agoContinue including temporary destructors in the CFG used for warnings.
Jordan Rose [Wed, 5 Sep 2012 23:11:06 +0000 (23:11 +0000)]
Continue including temporary destructors in the CFG used for warnings.

...and hopefully unbreak buildbots. My apologies!

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

12 years agoFormat strings: suggest casts for NS(U)Integer and [SU]Int32 on Darwin.
Jordan Rose [Wed, 5 Sep 2012 22:56:26 +0000 (22:56 +0000)]
Format strings: suggest casts for NS(U)Integer and [SU]Int32 on Darwin.

These types are defined differently on 32-bit and 64-bit platforms, and
trying to offer a fixit for one platform would only mess up the format
string for the other. The Apple-recommended solution is to cast to a type
that is known to be large enough and always use that to print the value.

This should only have an impact on compile time if the format string is
incorrect; in cases where the format string matches the definition on the
current platform, no warning will be emitted.

<rdar://problem/9135072&12164284>

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

12 years agoFormat string checking: change long if-statement to early returns.
Jordan Rose [Wed, 5 Sep 2012 22:56:19 +0000 (22:56 +0000)]
Format string checking: change long if-statement to early returns.

No functionality change.

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

12 years ago[analyzer] Always include destructors in the analysis CFG.
Jordan Rose [Wed, 5 Sep 2012 22:55:23 +0000 (22:55 +0000)]
[analyzer] Always include destructors in the analysis CFG.

While destructors will continue to not be inlined (unless the analyzer
config option 'c++-inlining' is set to 'destructors'), leaving them out
of the CFG is an incomplete model of the behavior of an object, and
can cause false positive warnings (like PR13751, now working).

Destructors for temporaries are still not on by default, since
(a) we haven't actually checked this code to be sure it's fully correct
    (in particular, we probably need to be very careful with regard to
    lifetime-extension when a temporary is bound to a reference,
    C++11 [class.temporary]p5), and
(b) ExprEngine doesn't actually do anything when it sees a temporary
    destructor in the CFG -- not even invalidate the object region.

To enable temporary destructors, set the 'cfg-temporary-dtors' analyzer
config option to '1'. The old -cfg-add-implicit-dtors cc1 option, which
controlled all implicit destructors, has been removed.

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

12 years ago[analyzer] Fix a crash PR13762.
Anna Zaks [Wed, 5 Sep 2012 22:31:58 +0000 (22:31 +0000)]
[analyzer] Fix a crash PR13762.

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

12 years ago[analyzer] NullOrUndef diagnostics: track symbols binded to regions.
Anna Zaks [Wed, 5 Sep 2012 22:31:55 +0000 (22:31 +0000)]
[analyzer] NullOrUndef diagnostics: track symbols binded to regions.

If a region is binded to a symbolic value, we should track the symbol.

(The code I changed was not previously exercised by the regression
tests.)

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

12 years ago[analyzer] Remove unneeded code.
Anna Zaks [Wed, 5 Sep 2012 22:31:49 +0000 (22:31 +0000)]
[analyzer] Remove unneeded code.

This region is set as interesting as part of trackNullOrUndefValue call,
no need to mark it as interesting twice.

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

12 years agoAdd test missed in previous commit.
Eric Christopher [Wed, 5 Sep 2012 21:50:35 +0000 (21:50 +0000)]
Add test missed in previous commit.

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

12 years agoTry to fix the windows bots.
Eric Christopher [Wed, 5 Sep 2012 21:50:30 +0000 (21:50 +0000)]
Try to fix the windows bots.

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

12 years agoApply some driver improvements for freebsd-*-mips*.
Eric Christopher [Wed, 5 Sep 2012 21:32:44 +0000 (21:32 +0000)]
Apply some driver improvements for freebsd-*-mips*.

Patch by Brooks Davis.

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

12 years ago[cindex.py] Make the use of a compatibilty check explicit
Tobias Grosser [Wed, 5 Sep 2012 20:23:53 +0000 (20:23 +0000)]
[cindex.py] Make the use of a compatibilty check explicit

At the moment, we implictly check compatibility between the python
bindings and libclang, as the python bindings will fail to load in
case a method we use in libclang is not available.

This patch makes the use of this compatibility check explicit and introduces a
flag to optionally disable the check. This will allow us to further harden the
compatibility check, but it also gives the user the possibility to disable the
compatibility check to evaluate compatibility with older libclang versions.

I added documentation that makes clear the python bindings are only tested
with the libclang version they have been shipped with.

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

12 years agoThread-safety analysis: bugfix for case where a trylock occurs in an
DeLesley Hutchins [Wed, 5 Sep 2012 20:01:16 +0000 (20:01 +0000)]
Thread-safety analysis: bugfix for case where a trylock occurs in an
expression involving temporaries.

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

12 years agoobjective-c++11: c++11 does not change pod-ness when
Fariborz Jahanian [Wed, 5 Sep 2012 19:51:20 +0000 (19:51 +0000)]
objective-c++11: c++11 does not change pod-ness when
type is an unqualified objc pointer in arc. Treat it just
as being treated in c++98. This fixes a bogus vararg warning
with -std=c++11. //rdar://12229679

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

12 years agoUpdate for r163231.
Chad Rosier [Wed, 5 Sep 2012 19:01:07 +0000 (19:01 +0000)]
Update for r163231.

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

12 years agoAdded missing test.
Abramo Bagnara [Wed, 5 Sep 2012 18:06:49 +0000 (18:06 +0000)]
Added missing test.

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

12 years agoc error recovery. treat an invalid redeclaration
Fariborz Jahanian [Wed, 5 Sep 2012 17:52:12 +0000 (17:52 +0000)]
c error recovery. treat an invalid redeclaration
of a c-function for what it is. Otherwise, this func
is treated as an overloadable c-function resulting in
a crash much later. // rdar://11743706

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

12 years ago[analyzer] Fix bad test from r163220.
Jordan Rose [Wed, 5 Sep 2012 17:34:50 +0000 (17:34 +0000)]
[analyzer] Fix bad test from r163220.

Add a FIXME to the test while I track down the real problem.

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

12 years agoAllow disabling of wchar_t type.
Abramo Bagnara [Wed, 5 Sep 2012 17:30:57 +0000 (17:30 +0000)]
Allow disabling of wchar_t type.

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

12 years ago[analyzer] Be more forgiving about calling methods on struct rvalues.
Jordan Rose [Wed, 5 Sep 2012 17:11:26 +0000 (17:11 +0000)]
[analyzer] Be more forgiving about calling methods on struct rvalues.

The problem is that the value of 'this' in a C++ member function call
should always be a region (or NULL). However, if the object is an rvalue,
it has no associated region (only a conjured symbol or LazyCompoundVal).
For now, we handle this in two ways:

1) Actually respect MaterializeTemporaryExpr. Before, it was relying on
   CXXConstructExpr to create temporary regions for all struct values.
   Now it just does the right thing: if the value is not in a temporary
   region, create one.

2) Have CallEvent recognize the case where its 'this' pointer is a
   non-region, and just return UnknownVal to keep from confusing clients.

The long-term problem is being tracked internally in <rdar://problem/12137950>,
but this makes many test cases pass.

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

12 years ago[analyzer] Clean up a couple uses of getPointeeType().
Jordan Rose [Wed, 5 Sep 2012 17:11:22 +0000 (17:11 +0000)]
[analyzer] Clean up a couple uses of getPointeeType().

No intended functionality change.

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

12 years agoRevert "[analyzer] Treat all struct values as regions (even rvalues)."
Jordan Rose [Wed, 5 Sep 2012 17:11:15 +0000 (17:11 +0000)]
Revert "[analyzer] Treat all struct values as regions (even rvalues)."

This turned out to have many implications, but what eventually seemed to
make it unworkable was the fact that we can get struct values (as
LazyCompoundVals) from other places besides return-by-value function calls;
that is, we weren't actually able to "treat all struct values as regions"
consistently across the entire analyzer core.

Hopefully we'll be able to come up with an alternate solution soon.

This reverts r163066 / 02df4f0aef142f00d4637cd851e54da2a123ca8e.

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

12 years agoIntroduces DynTypedMatcher as a new concept that replaces the UntypedBaseMatcher...
Manuel Klimek [Wed, 5 Sep 2012 12:12:07 +0000 (12:12 +0000)]
Introduces DynTypedMatcher as a new concept that replaces the UntypedBaseMatcher and TypedMatcher.

Due to DynTypedNode the basic dynamically typed matcher interface can now be simplified.

Also switches the traversal interfaces to use DynTypedNode;
this is in preperation for the hasAncestor implementation, and
also allows us to need fewer changes when we want to add new
nodes to traverse, thus making the code a little more decoupled.

Main design concerns: I went back towards the original design
of getNodeAs to return a pointer, and switched DynTypedNode::get
to always return a pointer (in case of value types like QualType
the pointer points into the storage of DynTypedNode, thus allowing
us to treat all the nodes the same from the point of view of a
user of the DynTypedNodes.

Adding the QualType implementation for DynTypedNode was needed
for the recursive traversal interface changes.

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

12 years agoNew clang-check vim integration script
Alexander Kornienko [Wed, 5 Sep 2012 12:11:13 +0000 (12:11 +0000)]
New clang-check vim integration script

Summary: New clang-check vim integration with the 're-run the last invocation when executed from .h file' feature.

Reviewers: klimek

Reviewed By: klimek

CC: cfe-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D35

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

12 years agoDo not add using directives to a function decl context when instantiating.
Abramo Bagnara [Wed, 5 Sep 2012 09:55:10 +0000 (09:55 +0000)]
Do not add using directives to a function decl context when instantiating.

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

12 years agoFixed lexical decl context of out of line class template instantiations.
Abramo Bagnara [Wed, 5 Sep 2012 09:05:18 +0000 (09:05 +0000)]
Fixed lexical decl context of out of line class template instantiations.

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

12 years agoChanging of type checking order on InitListExpr
Jin-Gu Kang [Wed, 5 Sep 2012 08:37:43 +0000 (08:37 +0000)]
Changing of type checking order on InitListExpr
- UnionType is checked eariler than RecordType.

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

12 years agoUpdate for r163187.
Chad Rosier [Wed, 5 Sep 2012 01:16:06 +0000 (01:16 +0000)]
Update for r163187.

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

12 years ago[ms-inline asm] Update test case for r163181.
Chad Rosier [Wed, 5 Sep 2012 00:08:54 +0000 (00:08 +0000)]
[ms-inline asm] Update test case for r163181.

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

12 years ago[ms-inline asm] Set the inline assembly dialect in CodeGen.
Chad Rosier [Tue, 4 Sep 2012 23:08:24 +0000 (23:08 +0000)]
[ms-inline asm] Set the inline assembly dialect in CodeGen.

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

12 years agoFix indentation.
Ted Kremenek [Tue, 4 Sep 2012 22:48:59 +0000 (22:48 +0000)]
Fix indentation.

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

12 years ago[ms-inline asm] Remove the Inline Asm Non-Standard Dialect attribute. This
Chad Rosier [Tue, 4 Sep 2012 22:23:54 +0000 (22:23 +0000)]
[ms-inline asm] Remove the Inline Asm Non-Standard Dialect attribute.  This
implementation does not co-exist well with how the sideeffect and alignstack
attributes are handled.

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

12 years agoMinor cleanup to improve code readability. No functional change intended.
Chad Rosier [Tue, 4 Sep 2012 19:50:17 +0000 (19:50 +0000)]
Minor cleanup to improve code readability.  No functional change intended.

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

12 years ago[analyzer] Don't use makeIntVal to create a floating-point value.
Jordan Rose [Tue, 4 Sep 2012 19:34:58 +0000 (19:34 +0000)]
[analyzer] Don't use makeIntVal to create a floating-point value.

SimpleSValBuilder processes a couple trivial identities, including 'x - x'
and 'x ^ x' (both 0). However, the former could appear with arguments of
floating-point type, and we weren't checking for that. This started
triggering an assert with r163069, which checks that a constant value is
actually going to be used as an integer or pointer.

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

12 years agoRevert r163083 per chandlerc's request.
Joao Matos [Tue, 4 Sep 2012 17:49:35 +0000 (17:49 +0000)]
Revert r163083 per chandlerc's request.

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

12 years agoRevert r163099 per chandlerc's request.
Joao Matos [Tue, 4 Sep 2012 17:33:09 +0000 (17:33 +0000)]
Revert r163099 per chandlerc's request.

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

12 years agoRevert r163076 per chandlerc's request.
Joao Matos [Tue, 4 Sep 2012 17:29:52 +0000 (17:29 +0000)]
Revert r163076 per chandlerc's request.

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

12 years agoRevert r163078 per chandlerc's request.
Joao Matos [Tue, 4 Sep 2012 17:18:12 +0000 (17:18 +0000)]
Revert r163078 per chandlerc's request.

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

12 years ago[ms-inline asm] The MCInstrDesc only tracks register definitions. For now,
Chad Rosier [Tue, 4 Sep 2012 16:39:38 +0000 (16:39 +0000)]
[ms-inline asm] The MCInstrDesc only tracks register definitions.  For now,
assume that if the 1st operands is an expression and the instruction mayStore,
then it is a memory definition.

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

12 years ago[ms-inline asm] Fix an illegal index and an 80-column violation.
Chad Rosier [Tue, 4 Sep 2012 16:36:26 +0000 (16:36 +0000)]
[ms-inline asm] Fix an illegal index and an 80-column violation.

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

12 years agoFix 80-column violation.
Chad Rosier [Tue, 4 Sep 2012 15:58:44 +0000 (15:58 +0000)]
Fix 80-column violation.

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

12 years ago[ms-inline asm] Use the new GetMCInstOperandNum() interface in the front-end.
Chad Rosier [Mon, 3 Sep 2012 20:40:52 +0000 (20:40 +0000)]
[ms-inline asm] Use the new GetMCInstOperandNum() interface in the front-end.

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

12 years ago[cindex.py] Allow to configure the path of libclang
Tobias Grosser [Mon, 3 Sep 2012 18:32:30 +0000 (18:32 +0000)]
[cindex.py] Allow to configure the path of libclang

By calling cindex.Config.set_library_path(path) or
cindex.Config.set_library_file(file) it is possible to specify from where
we load libclang. This fixes an open FIXME.

We also point the user to these functions, in case libclang can not be
loaded sucessfully.

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

12 years agotest/Driver/android-standalone.cpp: Fix test failure on Windowns, again.
NAKAMURA Takumi [Mon, 3 Sep 2012 11:49:36 +0000 (11:49 +0000)]
test/Driver/android-standalone.cpp: Fix test failure on Windowns, again.

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

12 years agoImproved the warning for the #@ Microsoft charizing operator. The existing one misspe...
Joao Matos [Mon, 3 Sep 2012 10:41:45 +0000 (10:41 +0000)]
Improved the warning for the #@ Microsoft charizing operator. The existing one misspelled the token as "@#" and didn't capitalize Microsoft.

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

12 years agoFix test failure on Windowns.
Evgeniy Stepanov [Mon, 3 Sep 2012 10:24:57 +0000 (10:24 +0000)]
Fix test failure on Windowns.

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

12 years agoFollow-up on r163110 - forgot to commit some new tests...
Timur Iskhodzhanov [Mon, 3 Sep 2012 09:20:57 +0000 (09:20 +0000)]
Follow-up on r163110 - forgot to commit some new tests...

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

12 years agoFix PR13444 - wrong mangling of "const char * const *" and friends with "-cxx-abi...
Timur Iskhodzhanov [Mon, 3 Sep 2012 09:08:10 +0000 (09:08 +0000)]
Fix PR13444 - wrong mangling of "const char * const *" and friends with "-cxx-abi microsoft"

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

12 years agoAndroid standalone toolchain support.
Evgeniy Stepanov [Mon, 3 Sep 2012 09:05:50 +0000 (09:05 +0000)]
Android standalone toolchain support.

This change adds detection of C++ headers and libraries paths when
building with the standalone toolchain from Android NDK. They are in a
slightly unusual place.

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

12 years agoRemoved unused argument.
Chad Rosier [Mon, 3 Sep 2012 03:16:15 +0000 (03:16 +0000)]
Removed unused argument.

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

12 years ago[ms-inline asm] Update for the MatchInstruction API change in r163101.
Chad Rosier [Mon, 3 Sep 2012 02:30:13 +0000 (02:30 +0000)]
[ms-inline asm] Update for the MatchInstruction API change in r163101.

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

12 years agoAdded a new cursor for SEHLeaveStmt to libclang.
Joao Matos [Mon, 3 Sep 2012 00:23:40 +0000 (00:23 +0000)]
Added a new cursor for SEHLeaveStmt to libclang.

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

12 years agoRename ANDROIDEABI to Android.
Logan Chien [Sun, 2 Sep 2012 09:30:11 +0000 (09:30 +0000)]
Rename ANDROIDEABI to Android.

Most of the code guarded with ANDROIDEABI are not
ARM-specific, and having no relation with arm-eabi.
Thus, it will be more natural to call this
environment "Android" instead of "ANDROIDEABI".

Note: We are not using ANDROID because several projects
are using "-DANDROID" as the conditional compilation
flag.

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

12 years agoDocumentation cleanup: Add \file comment for ASTContest.h, add \brief to many
James Dennett [Sun, 2 Sep 2012 08:14:22 +0000 (08:14 +0000)]
Documentation cleanup: Add \file comment for ASTContest.h, add \brief to many
items, remove redundant names from doc comments, fix various typos, and tidy
up some wording.

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

12 years agoImplemented parsing and AST support for the MS __leave exception statement. Also...
Joao Matos [Sun, 2 Sep 2012 03:45:41 +0000 (03:45 +0000)]
Implemented parsing and AST support for the MS __leave exception statement. Also a minor fix to __except printing in StmtPrinter.cpp. Thanks to Aaron Ballman for review.

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

12 years agoInclude the diagnostic introduced in r163078 in a group.
Joao Matos [Sun, 2 Sep 2012 00:48:08 +0000 (00:48 +0000)]
Include the diagnostic introduced in r163078 in a group.

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

12 years agoAdded a diagnostic for mismatched MS inheritance attributes. Also fixed the incomplet...
Joao Matos [Sun, 2 Sep 2012 00:13:48 +0000 (00:13 +0000)]
Added a diagnostic for mismatched MS inheritance attributes. Also fixed the incomplete type member pointer size calculation under the MS ABI.

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

12 years agoFixed typo causing tests to fail on non-MSVC machines.
Joao Matos [Sat, 1 Sep 2012 23:24:10 +0000 (23:24 +0000)]
Fixed typo causing tests to fail on non-MSVC machines.

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

12 years agoRefactored the Windows headers location lookup code. Expose it so standalone tools...
Joao Matos [Sat, 1 Sep 2012 22:33:43 +0000 (22:33 +0000)]
Refactored the Windows headers location lookup code. Expose it so standalone tools can have access to it.

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

12 years ago[analyzer] Silence unused variable warnings in NDEBUG builds.
Jordan Rose [Sat, 1 Sep 2012 19:15:13 +0000 (19:15 +0000)]
[analyzer] Silence unused variable warnings in NDEBUG builds.

No functionality change.

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

12 years ago[libclang] Fix indexing type alias declarations. rdar://11878406
Argyrios Kyrtzidis [Sat, 1 Sep 2012 19:08:08 +0000 (19:08 +0000)]
[libclang] Fix indexing type alias declarations. rdar://11878406

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

12 years ago[libclang] The annotation of tokens operation visits statement nodes code-recursively.
Argyrios Kyrtzidis [Sat, 1 Sep 2012 18:27:30 +0000 (18:27 +0000)]
[libclang] The annotation of tokens operation visits statement nodes code-recursively.
This can blow the stack with extremely deep hierarchies. Switch it to data-recursive.

This is implemented by introducing a post-children visitation callback that the
CursorVisitor is calling after child nodes of a cursor have been visited.
This is used by the annotate-tokens visitor to do extra work at that point.

rdar://11979525.

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

12 years ago[analyzer] Disallow creation of int vals with explicit bit width / signedness.
Jordan Rose [Sat, 1 Sep 2012 17:39:24 +0000 (17:39 +0000)]
[analyzer] Disallow creation of int vals with explicit bit width / signedness.

All clients of BasicValueFactory should be using QualTypes instead, and
indeed it seems they are. This caught the (fortunately harmless) bug
fixed in the previous commit.

No intended functionality change.

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

12 years ago[analyzer] Don't attempt to create a floating-point value of "1" for ++/--.
Jordan Rose [Sat, 1 Sep 2012 17:39:17 +0000 (17:39 +0000)]
[analyzer] Don't attempt to create a floating-point value of "1" for ++/--.

The current logic would actually create a float- or double-sized signed
integer value of 1, which is not at all the same.

No test because the value would be swallowed by an Unknown as soon as it
gets added or subtracted to the original value, but it enables the cleanup
in the next patch.

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

12 years ago[analyzer] Future-proofing r163012 (nameless functions and RetainCountChecker)
Jordan Rose [Sat, 1 Sep 2012 17:39:13 +0000 (17:39 +0000)]
[analyzer] Future-proofing r163012 (nameless functions and RetainCountChecker)

Any future exceptions need to go INSIDE the test that checks if the
IdentifierInfo is non-null!

No functionality change. Thanks for the review, Ted.

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

12 years ago[analyzer] Treat all struct values as regions (even rvalues).
Jordan Rose [Sat, 1 Sep 2012 17:39:09 +0000 (17:39 +0000)]
[analyzer] Treat all struct values as regions (even rvalues).

This allows us to correctly symbolicate the fields of structs returned by
value, as well as get the proper 'this' value for when methods are called
on structs returned by value.

This does require a moderately ugly hack in the StoreManager: if we assign
a "struct value" to a struct region, that now appears as a Loc value being
bound to a region of struct type. We handle this by simply "dereferencing"
the struct value region, which should create a LazyCompoundVal.

This should fix recent crashes analyzing LLVM and on our internal buildbot.

<rdar://problem/12137950>

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