Commit Graph

46752 Commits

Author SHA1 Message Date
Fariborz Jahanian 5bd5affe2d ObjC migrator: build conforming interface
declaration (not yet used). wip.

llvm-svn: 186369
2013-07-16 00:20:21 +00:00
Eli Friedman cccd06487d Fix member refs with using decl + anonymous union.
Make sure we call BuildFieldReferenceExpr with the appropriate decl
when a member of an anonymous union is made public with a using decl.
Also, fix a crash on invalid field access into an anonymous union.

Fixes PR16630.

llvm-svn: 186367
2013-07-16 00:01:31 +00:00
David Blaikie f168f582a5 Test case for r18266 (serialization support for TagDecl:IsCompleteDefinitionRequired)
llvm-svn: 186351
2013-07-15 21:33:26 +00:00
Fariborz Jahanian d36150d7ca ObjC migrator: finding conforming protocol
candidates for each class. wip.

llvm-svn: 186349
2013-07-15 21:22:08 +00:00
Kaelyn Uhrain 786928dbd2 Fix a typo in the diagnostic note added in r186342.
llvm-svn: 186348
2013-07-15 21:18:33 +00:00
Kaelyn Uhrain bad7fb09b2 Move the "->" to "." fixit from r186128 into a separate note since
recovery is not attempted with the fixit. Also move the associated test
case from FixIt/fixit.cpp to SemaCXX/member-expr.cpp since the fixit is
no longer automatically applied.

llvm-svn: 186342
2013-07-15 19:54:54 +00:00
Samuel Benzaquen 79656e19c8 Add support for type traversal matchers.
Summary:
Fixup the type traversal macros/matchers to specify the supported types.
Make the marshallers a little more generic to support any variadic function.
Update the doc script.

Reviewers: klimek

CC: cfe-commits, revane

Differential Revision: http://llvm-reviews.chandlerc.com/D1023

llvm-svn: 186340
2013-07-15 19:25:06 +00:00
Chandler Carruth 9324d169bd Re-revert r86040, which was un-reverted in r186199.
This breaks the build of basic patterns with repeated friend
declarations. See the added test case in SemaCXX/friend.cpp or the test
case reported to the original commit log.

Original commit log:
  If we friend a declaration twice, that should not make it visible to
  name lookup in the surrounding context. Slightly rework how we handle
  friend declarations to inherit the visibility of the prior
  declaration, rather than setting a friend declaration to be visible
  whenever there was a prior declaration.

llvm-svn: 186331
2013-07-15 17:27:42 +00:00
Daniel Jasper 49a9448d95 clang-format: Improve c-style cast detection.
Before:
  #define x ((int) - 1)
  #define p(q) ((int *) & q)
After:
  #define x ((int)-1)
  #define p(q) ((int *)&q)

llvm-svn: 186324
2013-07-15 15:04:42 +00:00
Daniel Jasper fa21c0724c Improvement of change r186320.
Fixed a test that by now passed for the wrong reason.

Before:
  llvm::outs() << "aaaaaaaaaaaaaaaaaaa: " << aaaaaaaaaaaaa(
                                                 aaaaaaaaaaaaaaaaaaaaaaaaaaaa);
After:
  llvm::outs() << "aaaaaaaaaaaaaaaaaaa: "
               << aaaaaaaaaaaaa(aaaaaaaaaaaaaaaaaaaaaaaaaaaa);

Also reformatted Format.cpp with the latest changes (1 formatting fix
and 1 layout change of a <<-chain).

llvm-svn: 186322
2013-07-15 14:33:14 +00:00
Daniel Jasper 0d5e44df3c Improve formatting of operator<< chains.
Before:
  llvm::outs() << "aaaaaaaaaaaaaaaa: " << aaaaaaaaaaaaaaaa << "aaaaaaaaaaaaaaaa: "
               << aaaaaaaaaaaaaaaa << "aaaaaaaaaaaaaaaa: " << aaaaaaaaaaaaaaaa;

After:
  llvm::outs() << "aaaaaaaaaaaaaaaa: " << aaaaaaaaaaaaaaaa
               << "aaaaaaaaaaaaaaaa: " << aaaaaaaaaaaaaaaa
               << "aaaaaaaaaaaaaaaa: " << aaaaaaaaaaaaaaaa;

llvm-svn: 186320
2013-07-15 14:12:30 +00:00
Aaron Ballman d0d27ab306 Replacing an empty switch with its moral equivalent. No functional changes intended.
llvm-svn: 186318
2013-07-15 13:41:33 +00:00
Craig Topper d6d31aceea Add 'static' and 'const' qualifiers to some arrays of strings.
llvm-svn: 186314
2013-07-15 08:24:27 +00:00
Serge Pavlov 7cd8f6020f Fix to PR12262 - assertion when substituting explicit template arguments
does not substitute a sizeof-pack expression.
The solution is proposed by Richard Smith.
Differential Revision: http://llvm-reviews.chandlerc.com/D869

llvm-svn: 186306
2013-07-15 06:14:07 +00:00
Craig Topper 2870072a91 Revert 186302 to fix build bots.
llvm-svn: 186305
2013-07-15 05:44:18 +00:00
Craig Topper 93b402d924 Use llvm::array_lengthof to replace sizeof(array)/sizeof(array[0]).
llvm-svn: 186302
2013-07-15 04:28:48 +00:00
Craig Topper e5ce831c7c Use llvm::array_lengthof to replace sizeof(array)/sizeof(array[0]).
llvm-svn: 186300
2013-07-15 03:38:40 +00:00
Eric Christopher e9348f6df5 Reformat line.
llvm-svn: 186294
2013-07-14 21:15:27 +00:00
Eric Christopher 324bbbd16a Move BlockLiteralGeneric earlier in CGDebugInfo and remove
BlockLiteralGenericSet and replace with a call to isType() on the
BlockLiteralGeneric.

llvm-svn: 186293
2013-07-14 21:12:44 +00:00
Eric Christopher 35f1f9fc28 Update a few comments and reformat a decl for clarity.
llvm-svn: 186292
2013-07-14 21:00:07 +00:00
Craig Topper 122ec3a338 Replace C++0x in a comment with C++11
llvm-svn: 186287
2013-07-14 17:04:56 +00:00
Craig Topper 3195e25399 Change cxx0x to cxx11 in diagnostic name.
llvm-svn: 186286
2013-07-14 17:02:30 +00:00
Craig Topper d25fb725cf Change cxx0x to cxx11 in diagnostic name.
llvm-svn: 186285
2013-07-14 17:01:54 +00:00
Craig Topper fa159c144a Use SmallVectorImpl& instead of SmallVector to avoid repeating small vector size.
llvm-svn: 186284
2013-07-14 16:47:36 +00:00
Richard Smith 8d304d5c73 Make these tests more robust against IRgen choosing to emit more named metadata.
llvm-svn: 186279
2013-07-14 06:18:38 +00:00
Richard Smith 3460dbbaf6 Delete a test that is checking badly for a point bug that Clang never had (and that spuriously fails with modules enabled).
llvm-svn: 186278
2013-07-14 06:17:03 +00:00
Richard Smith 49e56440f9 Add missing include guards into headers in lib/Headers. While it may appear
that these headers should not be included more than once, they are in fact
included twice when building our builtins module (in order for it to generate
submodules for them), and without this, any modular build enabling AVX and
including any builtin header fails.

Testing this is tricky because including any of these headers in a modular
build is liable to fail, due to unrelated builtin headers in the same module
including headers which might not be available on the system running the tests.
Suggestion on that front are welcome (but we're getting close to being able to
run a buildbot that has modules enabled for all tests, which would nicely solve
the testing problem).

llvm-svn: 186275
2013-07-14 05:41:45 +00:00
Richard Smith 42713d763f If an unimported submodule of an imported module contains a declaration of a
global allocation or deallocation function, that should not cause that global
allocation or deallocation function to become unavailable.

llvm-svn: 186270
2013-07-14 02:01:48 +00:00
David Blaikie a8d23ce8ce Serialization support for TagDecl::IsCompleteDefinitionRequired
Requested by Richard Smith in post-commit review of r186262

llvm-svn: 186266
2013-07-14 01:07:41 +00:00
David Blaikie b05ccfe5a3 Initialize the "IsCompleteDefinitionRequired" field in the ASTContext ctor
Introduced in r186262 & found by the hexagon buildbots (but owing to
this being UB, that's random chance - so there's no additional test case
here)

llvm-svn: 186265
2013-07-13 22:29:32 +00:00
David Blaikie 48ad6dc463 PR16214, PR14467: DebugInfo: use "RequireCompleteType" to decide when to emit the full definition of a type in -flimit-debug-info
This simplifies the core benefit of -flimit-debug-info by taking a more
systematic approach to avoid emitting debug info definitions for types
that only require declarations. The previous ad-hoc approach (3 cases
removed in this patch) had many holes.

The general approach (adding a bit to TagDecl and callback through
ASTConsumer) has been discussed with Richard Smith - though always open
to revision.

llvm-svn: 186262
2013-07-13 21:08:14 +00:00
David Blaikie 66ed89d07f Correctly classify pack expansions as NON_CANONICAL_UNLESS_DEPENDENT
Test coverage for non-dependent pack expansions doesn't demonstrate a
failure prior to this patch (a follow-up commit improving debug info
will cover this commit specifically) but covers a related hole in our
test coverage.

Reviewed by Richard Smith & Eli Friedman.

llvm-svn: 186261
2013-07-13 21:08:08 +00:00
David Blaikie ab277d6400 Simplify getTypeInfoImpl handling of 'non-canonical unless dependent' types.
These types are not dependent in this context, so just look through
the sugar.

Review by Richard Smith & Eli Friedman.

llvm-svn: 186260
2013-07-13 21:08:03 +00:00
David Blaikie 67fc79f9ea Revert "Revert "PR16540: ASTVector::insert(Context, Iter, Element) doesn't compile""
This reverts commit b18b043a5a37f76803d89467e46bcac286c0ecae.

Reapply with fix for the configure+make build (missing include of
ASTContext.h).

llvm-svn: 186257
2013-07-13 19:23:35 +00:00
David Blaikie 3c0e97ca7a Revert "PR16540: ASTVector::insert(Context, Iter, Element) doesn't compile"
This reverts commit r186253.

This is failing to link under Configure+Make on the buildbots for
reasons I don't immediately understand.

llvm-svn: 186255
2013-07-13 18:54:56 +00:00
David Blaikie 4cffb8ed5c PR16540: ASTVector::insert(Context, Iter, Element) doesn't compile
Fix some uninstantiable code in ASTVector::insert. I've added a
cheap-and-dirty compile test for this, because I don't have the time to
figure out a nice way to get a real ASTContext to implement executable
tests - but we probably should have them for this ADT.

llvm-svn: 186253
2013-07-13 18:08:59 +00:00
Fariborz Jahanian 9a3512b11d Fixes a typo caught by Arthur O'Dwyer
llvm-svn: 186249
2013-07-13 17:16:41 +00:00
Richard Smith 95d99308c4 C++ modules: Don't call DeclContext::lookup when half-way through deserializing
decls. That can reenter deserialization and explode horribly by trying to merge
a declaration that we've not got very far through deserializing yet.

llvm-svn: 186236
2013-07-13 02:00:19 +00:00
Reid Kleckner c16c44714b [ms-cxxabi] Don't consider function templates for name backrefs
They don't seem to be used for back references, presumably because a
function template is unlikely to reoccur, while a class template name
may reoccur as a type.

This fixes a mangling issue for llvm::hash_combine() in Hashing.h.

Reviewers: timurrrr

Differential Revision: http://llvm-reviews.chandlerc.com/D1078

llvm-svn: 186233
2013-07-13 00:43:39 +00:00
Fariborz Jahanian 9eabf45fce ObjC migrator: More knobs for migrating
conforming protocols to each class. wip.

llvm-svn: 186231
2013-07-13 00:04:20 +00:00
Fariborz Jahanian 1be015300c ObjC migrator: early work for migrating implicitly conforming
protocols to classes. This is wip.

llvm-svn: 186220
2013-07-12 22:32:19 +00:00
Argyrios Kyrtzidis 8ade08edba Changes so that a few tests do not fail when running under guarded malloc.
Guarded malloc emits some messages at the beginning in stderr when enabled.
These messages caused a few tests to fail.

llvm-svn: 186219
2013-07-12 22:30:03 +00:00
Bill Wendling 021c8ded04 Use function attributes to pass along the stack protector buffer size instead of making it a target option.
llvm-svn: 186218
2013-07-12 22:26:07 +00:00
Eli Friedman c6036aa831 Compute 'this' correctly for block in lambda.
Using CurFuncDecl is both correct and simple compared to crawling
the DeclContexts of the block.

Fixes <rdar://problem/14415072>.

llvm-svn: 186210
2013-07-12 22:05:26 +00:00
Kaelyn Uhrain 638264ea2a Provide a better diagnostic and a fixit for a '.' or '->' before the left paren
of a function call.

This fixes PR5898 and means we now have a better diagnostic here than GCC.

llvm-svn: 186208
2013-07-12 21:43:02 +00:00
Richard Smith 141942fcca Unrevert r186040, reverted in r186185, with fix for PR16597.
Original commit log:
  If we friend a declaration twice, that should not make it visible to
  name lookup in the surrounding context. Slightly rework how we handle
  friend declarations to inherit the visibility of the prior
  declaration, rather than setting a friend declaration to be visible
  whenever there was a prior declaration.

llvm-svn: 186199
2013-07-12 20:38:49 +00:00
Chandler Carruth 9bdd1bb403 Revert r186040 to fix PR16597 while Richard investigates what the best
fix is.

Original commit log:
  If we friend a declaration twice, that should not make it visible to
  name lookup in the surrounding context. Slightly rework how we handle
  friend declarations to inherit the visibility of the prior
  declaration, rather than setting a friend declaration to be visible
  whenever there was a prior declaration.

llvm-svn: 186185
2013-07-12 18:54:40 +00:00
Anna Zaks c30e0d759d [analyzer] Treat nullPtrType as a location type.
Fixes PR16584 (radar://14415223).

llvm-svn: 186172
2013-07-12 17:58:33 +00:00
Fariborz Jahanian c682ef566e fixes a typo caught by Jordan.
llvm-svn: 186171
2013-07-12 16:41:56 +00:00
Fariborz Jahanian 88890e7b50 Objective-C: Produce gcc compatible encoding of
ivar type in meta-data while preventing recursive
encoding in a corner case. // rdar://14408244

llvm-svn: 186169
2013-07-12 16:19:11 +00:00
Jordan Rose 525121f9b6 [scan-build] Add missing comma to ccc-analyzer.
Thanks, Dmitry!

llvm-svn: 186167
2013-07-12 16:07:33 +00:00
Daniel Jasper 77d5d31320 clang-format: Improve <<-formatting.
This fixes a regression caused by r186115.

Before:
  Diag(aaaaaaaaaaaaaaaaaaaaaaaaaaaaa,
       bbbbbbbbb) << aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                  << aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;

After:
  Diag(aaaaaaaaaaaaaaaaaaaaaaaaaaaaa, bbbbbbbbb)
      << aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
      << aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;

llvm-svn: 186164
2013-07-12 15:14:05 +00:00
Daniel Jasper 5aad4e5614 clang-format: Fix string literal breaking.
Before this patch, it did not cooperate with
Style::AlwaysBreakBeforeMultilineStrings. Thus, it would turn

  aaaaaaaaaaaa(aaaaaaaaaaaaa, "aaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaa");

into:

  aaaaaaaaaaaa(aaaaaaaaaaaaa, "aaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaa "
                              "aaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaa");

and only a second format step would lead to the desired (with that
option):

  aaaaaaaaaaaa(aaaaaaaaaaaaa,
               "aaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaa "
               "aaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaa");

This could even lead to clang-format breaking the string at a different
character and thus leading to a completely different end result.

llvm-svn: 186154
2013-07-12 11:37:05 +00:00
Daniel Jasper aea3bde06b clang-format: Break before/between array subscript expressions.
clang-format used to treat array subscript expressions much like
function call (just replacing () with []). However, this is not really
appropriate especially for expressions with multiple subscripts.

Although it might seem counter-intuitive, the most consistent solution
seems to be to always (if necessary) break before a square bracket,
never after it. Also, multiple subscripts of the same expression should
be aligned if they are on subsequent lines.

Before:
  aaaaaaaaaaaaaaaaaaaaaaaaa[aaaaaaaaaaaaaaaaaaaaaaaaa][
      bbbbbbbbbbbbbbbbbbbbbbbbb] = c;
  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa[
      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa][
      bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb] = ccccccccccc;

After:
  aaaaaaaaaaaaaaaaaaaaaaaaa[aaaaaaaaaaaaaaaaaaaaaaaaa]
                           [bbbbbbbbbbbbbbbbbbbbbbbbb] = c;
  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
      [aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa]
      [bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb] = ccccccccccc;

llvm-svn: 186153
2013-07-12 11:19:37 +00:00
Jordan Rose 78cd51b2ee [analyzer] Add support for __builtin_addressof.
...so we don't regress on std::addressof.

llvm-svn: 186140
2013-07-12 00:26:14 +00:00
Jordan Rose 05b3a8b604 [scan-build] Pass through all -f and -O flags, along with -Wwrite-strings.
These flags control language options and user-visible macros, so it's
important to preserve them when analyzing. Rather than try to keep up
with all the -f flags, we'll pass them all through and then ban the ones
we don't want (like -fsyntax-only).

-Wwrite-strings is really an f-flag in disguise: it implies -fconst-strings.

Patch by Keaton Mowry, modified by me.

llvm-svn: 186138
2013-07-11 23:56:12 +00:00
Eli Friedman 84c0143ea0 Fix crash on zero-argument assignment operator.
Make sure we don't crash when checking whether an assignment operator
without any arguments is a special member.  <rdar://problem/14397774>.

llvm-svn: 186137
2013-07-11 23:55:07 +00:00
David Dean 9b9c78a929 Add the ability to use guarded malloc when running clang's lit tests.
llvm-svn: 186135
2013-07-11 23:37:50 +00:00
Kaelyn Uhrain 1bb5dbf628 Provide a fixit hint for changing '->' to '.' if there is no operator->
defined for a class.

llvm-svn: 186128
2013-07-11 22:38:30 +00:00
Eli Friedman a0e6a7fcd8 Make CXXBaseSpecifier::getType return unqual type.
Various pieces of code, like base initialization in Sema and RTTI IRGen,
don't properly ignore qualifiers on base classes.  Instead of auditing the
whole codebase, just strip them off in the getter.  (The type as written is
still available in the TypeSourceInfo for code that cares.)

Fixes PR16596.

llvm-svn: 186125
2013-07-11 22:22:22 +00:00
Daniel Jasper 51efbad732 clang-format: Fix bug concerning the alignment of "}".
Before:
    int i;  // indented 2 space more than clang-format would use.
    SomeReturnType  // clang-format invoked on this line.
    SomeFunctionMakingLBraceEndInColumn80() {
  }  // This is the indent clang-format would prefer.

After:
    int i;  // indented 2 space more than clang-format would use.
    SomeReturnType  // clang-format invoked on this line.
    SomeFunctionMakingLBraceEndInColumn80() {
    }

llvm-svn: 186120
2013-07-11 21:27:40 +00:00
Daniel Jasper 718bd366cf clang-format: Break before trailing annotations.
(if they are not function-like).

Before:
  SomeFunction(aaaaaaaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaaaaaaaaaa)
      OVERRIDE;

After:
  SomeFunction(aaaaaaaaaaaaaaaaaaaaaa,
               aaaaaaaaaaaaaaaaaaaaaaaa) OVERRIDE;

llvm-svn: 186117
2013-07-11 21:02:56 +00:00
Daniel Jasper 4e9678f7a1 clang-format: Avoid line breaks before the first <<.
This puts a slight penalty on the linebreak before the first "<<", so
that clang-format generally tries to keep things on the first line.

User feedback has shown that this is generally desirable.

Before:
  llvm::outs()
      << "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa =" << aaaaaaaaaaaaaaaaaaaaaaaaaaa;

After:
  llvm::outs() << "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ="
               << aaaaaaaaaaaaaaaaaaaaaaaaaaa;

llvm-svn: 186115
2013-07-11 20:41:21 +00:00
Fariborz Jahanian 14e9541916 Restore warning to its original text when
certain familiy of methods have the wrong type.
// rdar://14408244

llvm-svn: 186111
2013-07-11 19:13:34 +00:00
Eli Bendersky e3cef2ad5d Simplify GetBuiltinNames by hoising the NoBuiltins argument out of it.
llvm-svn: 186106
2013-07-11 16:53:04 +00:00
Fariborz Jahanian b248ca5548 ObjectiveC arc[qoi]: When due to change of certain methods'
result type, a diagnostic being issued, issue a 'note' 
mentioning reason behind the unexpected warning.
// rdar://14121570.

llvm-svn: 186105
2013-07-11 16:48:06 +00:00
Daniel Jasper a3501d4b81 Improve detection of trailing return types.
Trailing return types can only occur in declaration contexts.

Before:
  void f() { auto a = b -> c(); }

After:
  void f() { auto a = b->c(); }

llvm-svn: 186087
2013-07-11 14:33:06 +00:00
Daniel Jasper 185de2499b Fix indentation problem for comments in call chains
Before:
SomeObject
    // Calling someFunction on SomeObject
        .someFunction();

After:
SomeObject
    // Calling someFunction on SomeObject
    .someFunction();

llvm-svn: 186085
2013-07-11 13:48:16 +00:00
Daniel Jasper 40db06af64 Keep trailing annotations close to their argument.
Before:
bool aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa GUARDED_BY(
    aaaaaaaaaaaa);

After:
bool aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    GUARDED_BY(aaaaaaaaaaaa);

llvm-svn: 186077
2013-07-11 12:34:23 +00:00
Richard Smith 9ce302ed9c PR5066: If a declarator cannot have an identifier, and cannot possibly be
followed by an identifier, then diagnose an identifier as being a bogus part of
the declarator instead of tripping over it. Improves diagnostics for cases like

  std::vector<const int *p> my_vec;

llvm-svn: 186061
2013-07-11 05:10:21 +00:00
James Dennett 581c87a362 Documentation fixes - the rest of DeclCXX.h:
* More \brief additions/fixes;
* Fix some misleading comments about C++11's explicit conversion operators;
* Mark up some \code examples;
* Add \file documentation.

llvm-svn: 186059
2013-07-11 05:01:16 +00:00
James Dennett a3dc03cf6c Documentation cleanup for DeclCXX.h:
* Fixing up \brief summaries (adding some, making some briefer);
* Standardizing on \commands, not @commands;
* Update C++0x references to C++11;
* Fix typos and Doxygen warnings.

llvm-svn: 186056
2013-07-11 03:51:36 +00:00
NAKAMURA Takumi d704cb755f clang/test/CodeGen/c11atomics.c: Fix testcase for -Asserts since r186054.
llvm-svn: 186055
2013-07-11 03:45:54 +00:00
Eli Friedman 035b39e3bd Fix build.
Sorry about that.

llvm-svn: 186054
2013-07-11 02:28:36 +00:00
Richard Smith 6cbd65d84d Add a __builtin_addressof that performs the same functionality as the built-in
& operator (ignoring any overloaded operator& for the type). The purpose of
this builtin is for use in std::addressof, to allow it to be made constexpr;
the existing implementation technique (reinterpret_cast to some reference type,
take address, reinterpert_cast back) does not permit this because
reinterpret_cast between reference types is not permitted in a constant
expression in C++11 onwards.

llvm-svn: 186053
2013-07-11 02:27:57 +00:00
Richard Smith af9de91fd2 Make CheckAddressOfOperand a member of Sema so it can be reused by
__builtin_addressof.

llvm-svn: 186052
2013-07-11 02:26:56 +00:00
Eli Friedman be4504df26 Simplify atomic load/store IRGen.
Also fixes a couple minor bugs along the way; see testcases.

llvm-svn: 186049
2013-07-11 01:32:21 +00:00
Richard Smith 36ee4fc329 Fix some grammar errors.
llvm-svn: 186048
2013-07-11 00:34:42 +00:00
Richard Smith ccfc9ffcbe Fix documentation:
#if defined(__has_foo("X")) && __has_foo("X")

is not a correct way to portably use __has_foo, because it is expanded to

  #if 0 && 0("X")

... which is ill-formed.

Also add a missing ')'.

llvm-svn: 186047
2013-07-11 00:27:05 +00:00
Richard Smith 7a73449b31 If we friend a declaration twice, that should not make it visible to name
lookup in the surrounding context. Slightly rework how we handle friend
declarations to inherit the visibility of the prior declaration, rather
than setting a friend declaration to be visible whenever there was a prior
declaration.

llvm-svn: 186040
2013-07-10 22:04:13 +00:00
Fariborz Jahanian 56f48d09f8 ObjC migrator: Improve on hueristics.
migrate to 'copy attribute if Object
class implements NSCopying otherwise 
assume implied 'strong'. Remove 
lifetime qualifier on property as it has
moved to property's attribute. Added TODO
comment for future work by poking into
setter implementation.

llvm-svn: 186037
2013-07-10 21:30:22 +00:00
Eric Christopher 872018b5be Use a LexicalScope here since it is one and it will encapsulate
the two sets of debug scope and cleanup scope.

llvm-svn: 186030
2013-07-10 20:14:36 +00:00
Jordan Rose 6444653a06 [analyzer] Remove bogus assert: in C++11, 'new' can do list-initialization.
Previously, we asserted that whenever 'new' did not include a constructor
call, the type must be a non-record type. In C++11, however, uniform
initialization syntax (braces) allow 'new' to construct records with
list-initialization: "new Point{1, 2}".

Removing this assertion should be perfectly safe; the code here matches
what VisitDeclStmt does for regions allocated on the stack.

<rdar://problem/14403437>

llvm-svn: 186028
2013-07-10 19:14:10 +00:00
James Dennett 86e67a2fc4 Add a hook RecursiveASTVisitor::TraverseLambdaBody, to enable visitors to
use/maintain additional state from the LambdaExpr while visiting the body
of a LambdaExpr.

One use for this arises because Clang's AST currently holds lambda bodies
in a form prior to their adjustment to refer to captured copies of local
variables, and so some clients will need access to the lambda's closure
type in order to query how to map VarDecl*s to the FieldDecls of their
by-copy captures. This hook is sufficient for at least one such client;
to do this without such a hook would require the client to re-implement
the whole of TraverseLambdaExpr, which is non-trivial and would likely be
more brittle.

llvm-svn: 186024
2013-07-10 18:29:15 +00:00
Kaelyn Uhrain 8ec9f5f60e Offer typo suggestions for 'using' declarations.
Patch courtesy of Luke Zarko <zarko@google.com>

llvm-svn: 186019
2013-07-10 17:34:22 +00:00
Daniel Jasper b10cbc45ad Add experimental flag for adaptive parameter bin-packing.
This is not activated for any style, might change or go away
completely.

For those that want to play around with it, set
ExperimentalAutoDetectBinPacking to true.

clang-format will then:
Look at whether function calls/declarations/definitions are currently
formatted with one parameter per line (on a case-by-case basis). If so,
clang-format will avoid bin-packing the parameters. If all parameters
are on one line (thus that line is "inconclusive"), clang-format will
make the choice dependent on whether there are other bin-packed
calls/declarations in the same file.

The reason for this change is that bin-packing in some situations can be
really bad and an author might opt to put one parameter on each line. If
the author does that, he might want clang-format not to mess with that.
If the author is unhappy with the one-per-line formatting, clang-format
can easily be convinced to bin-pack by putting any two parameters on the
same line.

llvm-svn: 186003
2013-07-10 14:02:49 +00:00
Serge Pavlov ed5fe90bb8 Fixed comment of Sema::FindInstantiatedDecl.
llvm-svn: 185997
2013-07-10 04:59:14 +00:00
Eli Friedman 0cd2335755 Finish off mangling locals in block literals.
Specifically, handle the case where the block is in a default argument
in a class method.  The mangling here follows what we do for lambdas.

llvm-svn: 185991
2013-07-10 01:33:19 +00:00
Eli Friedman 8978a9dd0a Get rid of dead/useless code for block mangling.
llvm-svn: 185989
2013-07-10 01:13:27 +00:00
Eli Friedman 3b7d46c3ae More local mangling fixes.
Compute mangling numbers for externally visible local variables and tags.
Change the mangler to consistently use discriminators where necessary.
Tweak the scheme we use to number decls which are not externally visible
to avoid unnecessary discriminators in common cases now that we request
them more consistently.

Fixes <rdar://problem/14204721>.

llvm-svn: 185986
2013-07-10 00:30:46 +00:00
Fariborz Jahanian a830ea7431 objc migrator: More refinment of property
attributes in migration. Specialli use of
'copy' attribute for retainable object types.

llvm-svn: 185985
2013-07-10 00:20:11 +00:00
Peter Collingbourne 41148a8a19 Apply BlackList -> SpecialCaseList rename in Clang.
Differential Revision: http://llvm-reviews.chandlerc.com/D1095

llvm-svn: 185979
2013-07-09 22:03:30 +00:00
Fariborz Jahanian db4fc28145 Objective-C: merge objc_requires_super attribute of
method declaration into its implementation to
prevent a bogus warning about mismatched attributes.
then make sure the warning about missing call to super comes out
of the method implementation. // rdar://14251387

llvm-svn: 185974
2013-07-09 22:02:20 +00:00
Adrian Prantl 7278788ffe Reapply an improved version of r180816/180817.
Do not generate VLAs as complex variables any more, as they are now
correctly represented as breg+0 locations in the backend.

(Paired commit with LLVM: r185966)

rdar://problem/13658587

llvm-svn: 185967
2013-07-09 20:29:03 +00:00
Fariborz Jahanian d83ef848bd ObjC migrator: Add -objcmt-migrate-property to do property
migration. Also, fixes an old bug where older migration 
flags were not being checked for properly.

llvm-svn: 185948
2013-07-09 16:59:14 +00:00
Daniel Jasper 6cdec7cf05 Initial support for formatting trailing return types.
This fixes llvm.org/PR15170.

For now, the basic formatting rules are (based on the C++11 standard):
* Surround the "->" with spaces.
* Break before "->".

Also fix typo.

llvm-svn: 185938
2013-07-09 14:36:48 +00:00
Rafael Espindola ab417699dd ArrayRef'ize Sema::FinalizeDeclaratorGroup, Sema::BuildDeclaratorGroup and
Sema::ActOnDocumentableDecls.

Patch by Robert Wilhelm.

llvm-svn: 185931
2013-07-09 12:05:01 +00:00
Daniel Jasper bd05888fa0 Avoid confusing indentations for chained function calls.
Basically treat a function with a trailing call similar to a function
with multiple parameters.

Before:
  aaaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(
      aaaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaaa))
      .aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa();

After:
  aaaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(
                           aaaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaaa))
      .aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa();

Also fix typo.

llvm-svn: 185930
2013-07-09 11:57:27 +00:00
NAKAMURA Takumi 80e373e44f c-index-test/CMakeLists.txt: Suggest -isystem to include libxml2 with include_directories(SYSTEM).
llvm-svn: 185928
2013-07-09 11:14:30 +00:00
NAKAMURA Takumi b538ac6830 c-index-test/Makefile: Use -isystem instead of -I on $(LIBXML2_INC) with -Wdocumentation.
-Wdocumentation won't seek -isystem. LIBXML2's headers in a certain distro might be incompatible to -Wdocumentation.

FIXME: Could autoconf detect clang or availability of -isystem?
llvm-svn: 185927
2013-07-09 11:14:24 +00:00
Daniel Jasper b1f74a8152 Fix alignment of closing brace in braced initializers.
Before:
someFunction(OtherParam, BracedList{
                           // comment 1 (Forcing intersting break)
                           param1, param2,
                           // comment 2
                           param3, param4
             });
After:
someFunction(OtherParam, BracedList{
                           // comment 1 (Forcing intersting break)
                           param1, param2,
                           // comment 2
                           param3, param4
                         });

To do so, the UnwrappedLineParser now stores the information about the
kind of brace in the FormatToken.

llvm-svn: 185914
2013-07-09 09:06:29 +00:00
Daniel Jasper 6331da0672 Format overloaded operators like other functions.
This fixes llvm.org/PR16328 (at least partially).

Before:
SomeLoooooooooooooooooooooooooooooogType operator<<(
    const SomeLooooooooogType &a, const SomeLooooooooogType &b);

After:
SomeLoooooooooooooooooooooooooooooogType
operator<<(const SomeLooooooooogType &a, const SomeLooooooooogType &b);

llvm-svn: 185908
2013-07-09 07:43:55 +00:00
Anna Zaks e0ad10404d [analyzer] Fixup for r185609: actually do suppress warnings coming out of std::list.
list is the name of a class, not a namespace. Change the test as well - the previous
version did not test properly.

Fixes radar://14317928.

llvm-svn: 185898
2013-07-09 01:55:00 +00:00
Eli Friedman 999af7bf6e Fix recovery for missing * in objc property.
<rdar://problem/14354144>

llvm-svn: 185897
2013-07-09 01:38:07 +00:00
Richard Smith 701a3523ba Don't give # and ## special treatment when in -traditional-cpp mode. Patch by
Austin Seipp!

llvm-svn: 185896
2013-07-09 01:00:29 +00:00
Richard Smith baf2912b40 Generalize hack allowing 'const' in __has_attribute (etc) to allow any token
with identifier info. This covers most identifier-like entities (other than
the ISO646 keywords).

llvm-svn: 185895
2013-07-09 00:57:56 +00:00
Eli Friedman 544c956b72 Fix crash typo-correcting dependent member func.
PR16561.

llvm-svn: 185887
2013-07-08 23:35:04 +00:00
Fariborz Jahanian e61c907792 ObjC migration: more test for migration to
properties.

llvm-svn: 185884
2013-07-08 23:29:51 +00:00
Kaelyn Uhrain 476c823ec8 Attempt typo correction for function calls with the wrong number of arguments.
Combined with typo correction's new ability to apply global/absolute nested
name specifiers to possible corrections, cases such as in PR12287 where the
desired function is being shadowed by a lexically closer function with the
same name but a different number of parameters will now include a FixIt.

On a side note, since the test for this change caused
test/SemaCXX/typo-correction.cpp to exceed the typo correction limit for
a single file, I've included a test case for exceeding the limit and added
some comments to both the original and part two of typo-correction.cpp
warning future editors of the files about the limit.

llvm-svn: 185881
2013-07-08 23:13:44 +00:00
Kaelyn Uhrain 53e721980b Make a couple of useful typo correction callbacks more widely available.
llvm-svn: 185880
2013-07-08 23:13:39 +00:00
Fariborz Jahanian 7ac20e1031 ObjC migration: Skip over setter/getter with attributes
for now. 

llvm-svn: 185879
2013-07-08 22:49:25 +00:00
Fariborz Jahanian bfaabe40e7 [Objective-C migrator] replace candidate user setter/getter with
their equivalent property declaration. wip.

llvm-svn: 185873
2013-07-08 21:42:08 +00:00
Eli Friedman e6d3395d78 Fix Sema for compares with _Atomic vars.
Use UsualArithmeticConversions unconditionally in analysis of
comparisons and conditional operators: the method performs
the usual arithmetic conversions if both sides are arithmetic, and
usual unary conversions if they are not.  This is just a cleanup
for conditional operators; for comparisons, it fixes the issue that
we would try to check isArithmetic() on an atomic type.

Also, fix GetExprRange() in SemaChecking.cpp so it deals with variables
of atomic type correctly.

Fixes PR15537.

llvm-svn: 185857
2013-07-08 20:20:06 +00:00
Daniel Jasper 6a09df7964 Fix incorrect incorrect cast identification in clang-format.
This fixes llvm.org/PR16534.

Before:
aaaaa& operator+(const aaaaa&)LLVM_DELETED_FUNCTION;
After:
aaaaa& operator+(const aaaaa&) LLVM_DELETED_FUNCTION;

llvm-svn: 185828
2013-07-08 14:58:01 +00:00
Enea Zaffanella 4c409494d8 Fixed testcase failing under MS by adding "-fno-delayed-template-parsing",
as suggested by Takumi. To this end, added a MatchVerifier::match()
overload accepting a vector of invocation arguments.

llvm-svn: 185827
2013-07-08 14:50:30 +00:00
Daniel Jasper 3ac9b9e258 Reformat clang-format's source files after r185822 and others.
llvm-svn: 185823
2013-07-08 14:34:09 +00:00
Daniel Jasper ee7539a387 Prefer similar line breaks.
This adds a penalty for clang-format for each break that occurs in
a set of parentheses (including fake parenthesis that determine
the range of certain operator precendences) that have not yet been
broken. Thereby, clang-format prefers similar line breaks.

This fixes llvm.org/PR15506.

Before:
const int kTrackingOptions =
    NSTrackingMouseMoved | NSTrackingMouseEnteredAndExited |
    NSTrackingActiveAlways;

After:
const int kTrackingOptions = NSTrackingMouseMoved |
                             NSTrackingMouseEnteredAndExited |
                             NSTrackingActiveAlways;

Also removed ParenState::ForFakeParenthesis which has become unused.

llvm-svn: 185822
2013-07-08 14:25:23 +00:00
Manuel Klimek 7e3d9698fd Fix use of invalidated iterator bug in AST match finder.
Pulled out the cache clearing in the case of descendant matching, too,
for consistency, also it is not technically needed there.

FIXME: Make cache size configurable and add unit test.
llvm-svn: 185820
2013-07-08 14:16:30 +00:00
Alexander Kornienko 614d96a1f6 Fix for corner cases in code handling leading "* " decorations in block comments
Summary:
Fixes problems that lead to incorrect formatting of these and similar snippets:
/*
 **
 */

/*
 **/

/*
 * */

/*
 *test
 */

Clang-format used to think that all the cases above use "* " decoration, and
failed to calculate insertion position properly. It also used to remove leading 
"* " in the last line.

Reviewers: klimek

Reviewed By: klimek

CC: cfe-commits

Differential Revision: http://llvm-reviews.chandlerc.com/D1113

llvm-svn: 185818
2013-07-08 14:12:07 +00:00
NAKAMURA Takumi 0b90083168 clang/include/clang/AST/ExprCXX.h:260:5: Fix a warning -- unknown command tag name 'cc'; did you mean 'c'? [-Wdocumentation]
llvm-svn: 185810
2013-07-08 12:00:36 +00:00
NAKAMURA Takumi 270bca5dc9 clang/test/Index/comment-custom-block-command.cpp: This has not been failing since r175892 on valgrind.
That said, it fails with --vg-leak. Mark it as XFAIL: vg_leak instead.

llvm-svn: 185809
2013-07-08 12:00:29 +00:00
James Dennett 3231a505bf Documentation cleanup for include/clang/AST/ExprCXX.h.
This is mostly Doxygen formatting, but also updates some C++0x references
to C++11 and clarifies some wording.

llvm-svn: 185798
2013-07-08 07:29:35 +00:00
NAKAMURA Takumi c7fa08d5eb clang/test/Misc/permissions.cpp: Suppress this on MSYS with the feature 'shell-preserves-root'.
FIXME: Could we introduce another feature for it?
llvm-svn: 185797
2013-07-08 06:45:16 +00:00
NAKAMURA Takumi 9250b05696 clang/test/CodeGen/2008-01-25-ByValReadNone.c: Add explicit -triple x86_64-unknown-unknown.
It would emit @llvm.memcpy with "-triple x86_64-(mingw32|win32)" and had been failing since Nick's r185735.

  ; Function Attrs: nounwind
  declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture, i8* nocapture readonly, i64, i32, i1) #1

llvm-svn: 185796
2013-07-08 06:38:51 +00:00
NAKAMURA Takumi 58c821a0d9 AST/SourceLocationTest.cpp: Appease MS hosts to suppress CXXUnresolvedConstructExpr.SourceRange, for now.
FIXME: It could pass if MS-compatible mode were disabled with Args.push_back("-fno-delayed-template-parsing").
llvm-svn: 185795
2013-07-08 06:38:46 +00:00
Craig Topper ac9201a48f Simplify code. No functional change.
llvm-svn: 185792
2013-07-08 04:47:18 +00:00
Craig Topper 0a4e1f586c Introduce a typedef for the type of NewlyDeducedPacks to avoid repeating the small size of the inner SmallVector.
llvm-svn: 185789
2013-07-08 04:44:01 +00:00
Craig Topper 4b482ee0ef Remove 'else' after 'return'
llvm-svn: 185787
2013-07-08 04:24:47 +00:00
Craig Topper c1bbe8d6d2 Function argument formatting fixes. No functional change.
llvm-svn: 185786
2013-07-08 04:16:49 +00:00
Craig Topper 7965357ce4 Function argument formatting fixes.
llvm-svn: 185785
2013-07-08 04:13:06 +00:00
Craig Topper 61ac906bdd Use SmallVectorImpl::reverse_iterator instead of SmallVector to avoid specifying the vector size.
llvm-svn: 185784
2013-07-08 03:55:09 +00:00
David Majnemer ea5092a3b0 Sema: Do not merge new decls with invalid, old decls
Sema::MergeFunctionDecl attempts merging two decls even if the old decl
is invalid.  This can lead to interesting circumstances where we
successfully merge the decls but the result makes no sense.

Take the following for example:

template <typename T>
int main(void);

int main(void);

Sema will not consider these to be overloads of the same name because
main can't be overloaded, which means that this must be a redeclaration.

In this case the templated decl is compatible with the non-templated
decl allowing the Sema::CheckFunctionDeclaration machinery to move on
and do bizarre things like setting the previous decl of a non-templated
decl to a templated decl!

The way I see it, we should just bail from MergeFunctionDecl if the old
decl is invalid.

This fixes PR16531.

llvm-svn: 185779
2013-07-07 23:49:50 +00:00
Enea Zaffanella 8421a06314 Fixed source range for functional cast and unresolved construct expr nodes.
Added testcases.

llvm-svn: 185773
2013-07-07 06:41:54 +00:00
Richard Smith 7a22921e5a Rename test to match C++1y paragraph number per N3690, and add additional test
case inspired by a stackoverflow question.

llvm-svn: 185772
2013-07-07 06:15:42 +00:00
James Dennett 4d08542175 Documentation cleanup for include/clang/AST/DeclCXX.h, no substantive changes.
* Fix up \brief documentation;
* Update C++0x references to C++11;
* Doxygen formatting: bulleted lists start with a single hyphen, not two;
* Fix a typo, "assosiate" -> "associate".

llvm-svn: 185771
2013-07-07 05:19:50 +00:00
Enea Zaffanella a90af72e8f Fixed source location info for UnaryTransformTypeLoc nodes.
llvm-svn: 185765
2013-07-06 18:54:58 +00:00
Fariborz Jahanian ae26bb67f8 Objective-C: Warn when fast enumeration variable isn't used.
// rdar://14182680.

llvm-svn: 185762
2013-07-06 18:04:13 +00:00
Sylvestre Ledru 8e5d82e541 Remove some useless declarations (found by scan-build)
llvm-svn: 185752
2013-07-06 08:00:09 +00:00
David Majnemer 027f9c4026 Sema: Fix a crash when main is redeclared as a function-template.
This boils down to us sending invalid function decls to
CheckFunctionDeclaration becauswe we did not consider that CheckMain
could cause the decl to be invalid.  Instead, interogate the new decl's
main-validity and *then* send it over to get CheckFunctionDeclaration'd
if it was still valid after calling CheckMain.

llvm-svn: 185745
2013-07-06 02:13:46 +00:00
Nick Lewycky 02df2062c6 Update test for change in r185735.
llvm-svn: 185736
2013-07-06 00:30:27 +00:00
Fariborz Jahanian e8545dde7b Remove referece type onproperty of abstract
class type. // rdar://14261999

llvm-svn: 185734
2013-07-05 23:50:55 +00:00
Fariborz Jahanian e4055692f4 [comment parsing]: Removes an unsafe API whose
use can cause crash. No test is available. It is uncovered
by code browsing.  // rdar://14348205

llvm-svn: 185732
2013-07-05 23:20:55 +00:00
Rafael Espindola 18627115f4 Use llvm::sys::fs::createUniqueFile.
Include a test that clang now produces output files with permissions matching
the umask.

llvm-svn: 185727
2013-07-05 21:13:58 +00:00
Argyrios Kyrtzidis 1035790034 [libclang] Add the new function to libclang.exports
llvm-svn: 185725
2013-07-05 20:51:44 +00:00
Fariborz Jahanian 266926d85e [objc migrator]: More knobs to do migration to
use of objc's properties.

llvm-svn: 185724
2013-07-05 20:46:03 +00:00
Argyrios Kyrtzidis 7b50fc520f [libclang] Introduce clang_Cursor_isObjCOptional, which returns whether the declaration was affected by "@optional"
rdar://14348525.

llvm-svn: 185722
2013-07-05 20:44:37 +00:00
Eli Friedman eecc09a99c Don't use mangleCXXRTTIName in TBAA for C code.
This changes the TBAA code so it doesn't use mangleCXXRTTIName in C,
because it doesn't really make sense there.  Also, as sort of a
defense-in-depth change, fix the mangler so it handles C RecordDecls
correctly.

No tests because I don't know the TBAA code well enough to write a test,
and I don't know how else to trigger mangling a local struct in C.

Fixes a crash with r185450 reported by Joerg Sonnenberger.

llvm-svn: 185721
2013-07-05 20:27:40 +00:00
Rafael Espindola a36e78ef5d Use llvm::sys::fs::createTemporaryFile.
llvm-svn: 185717
2013-07-05 20:00:06 +00:00
Craig Topper 5603df45df Use SmallVectorImpl& for function arguments instead of SmallVector.
llvm-svn: 185715
2013-07-05 19:34:19 +00:00
Eli Friedman 86af13f0ab Fix regression from r185450.
As it turns out, the NoFunction bit for local class mangling needed to be
propagated into more places. r185450 turned what used to be an incorrect
mangling into an assertion.

llvm-svn: 185713
2013-07-05 18:41:30 +00:00
Fariborz Jahanian 873bae79ac Objective-C: diagnose when synthesizing an ivar of
abstract class type. // rdar://14261999

llvm-svn: 185710
2013-07-05 17:18:11 +00:00
Benjamin Kramer f5d46005b6 Add a test case for r185707/PR16547.
llvm-svn: 185708
2013-07-05 15:51:00 +00:00
Rafael Espindola e4ffbdf349 Fix PR16547.
We should not be asking unique_file to prepend the system temporary directory
when creating the html report. Unfortunately I don't think we can test this
with the current infrastructure since unique_file ignores MakeAbsolute if the
directory is already absolute and the paths provided by lit are.

I will take a quick look at making this api a bit less error prone.

llvm-svn: 185707
2013-07-05 15:05:40 +00:00
Rafael Espindola 1d0912a475 We don't need to check for windows' error codes in here.
The operator== calls equivalent which calls default_error_condition which
handles windows to posix conversion.

llvm-svn: 185702
2013-07-05 14:15:24 +00:00
Daniel Jasper 6f9c8d2148 Fix formatting for allocation of new pointer variables.
Before:
T **t = new T * ;
T **q = new T * ();

After:
T **t = new T *;
T **q = new T *();

llvm-svn: 185699
2013-07-05 13:30:40 +00:00
Daniel Jasper 0e90c3d92c Improve detection for preventing certain kind of formatting patterns.
This is a better implementation of r183097. The main purpose is to
prevent certain constructs to be formatted "like a block of text".

Before:
aaaaaaaaaaaaa<
    aaaaaaaaaa, aaaaaaaaaaa, aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,
    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa>* aaaa = new aaaaaaaaaaaaa<
    aaaaaaaaaa, aaaaaaaaaaa, aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,
    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa>(bbbbbbbbbbbbbbbbbbbbbbbb);
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa[
    bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb] = (*cccccccccccccccc)[
    dddddddddddddddddddddddddddddddddddddddddddddddddddddddd];

After:
aaaaaaaaaaaaa<aaaaaaaaaa, aaaaaaaaaaa,
              aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,
              aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa>* aaaa =
    new aaaaaaaaaaaaa<aaaaaaaaaa, aaaaaaaaaaa,
                      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,
                      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa>(
        bbbbbbbbbbbbbbbbbbbbbbbb);
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa[
    bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb] =
    (*cccccccccccccccc)[
        dddddddddddddddddddddddddddddddddddddddddddddddddddddddd];

llvm-svn: 185687
2013-07-05 09:14:35 +00:00
Daniel Jasper 1bc1b502ec Don't break after a "(" following a binary operator.
Additionally, allow breaking after c-style casts, but with a high
penalty.

Before:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa *foo = (
    aaaaaaaaaaaaaaaaa *)bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb;
After:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa *foo = (aaaaaaaaaaaaaaaaa *)
    bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb;

This fixes llvm.org/PR16049.

llvm-svn: 185685
2013-07-05 07:58:34 +00:00
David Majnemer 0f328447b6 Sema: Call IgnoreParens fewer times in CheckAddressOfOperand
llvm-svn: 185684
2013-07-05 06:23:33 +00:00
Craig Topper 3598eb7eba Use typedef for Densemap contraining SmallVector passed to a function to avoid repeating SmallVector size.
llvm-svn: 185683
2013-07-05 04:43:31 +00:00
Craig Topper 79be4cdd2d Add typedefs for Densemaps containing SmallVectors to avoid repeating the SmallVector size when creating iterators for the DenseMap.
llvm-svn: 185682
2013-07-05 04:33:53 +00:00
Rafael Espindola c8c995a2bd Use the new --crash option in commands that are expected to crash.
llvm-svn: 185679
2013-07-05 02:53:30 +00:00
James Dennett b46f7b974e Add some more documentation on how to navigate from a LambdaExpr::Capture
to the associated FieldDecl.

llvm-svn: 185674
2013-07-04 22:15:44 +00:00
James Dennett 3947f5671a Minor documentation cleanup
llvm-svn: 185672
2013-07-04 22:14:20 +00:00
Roman Divacky 4575c64f9d Add test for r185584.
llvm-svn: 185668
2013-07-04 21:29:24 +00:00
Rafael Espindola 5c6c707e53 Require a shell for this test.
Some versions of python will expand the glob used in the test, others wont,
causing the test to fail when run with LIT_USE_INTERNAL_SHELL=1.

llvm-svn: 185653
2013-07-04 16:23:44 +00:00
Rafael Espindola 925213b0fa Add 'not' to commands that are expected to fail.
This is at least good documentation, but also opens the possibility of
using pipefail.

llvm-svn: 185652
2013-07-04 16:16:58 +00:00
Rafael Espindola 76e202c7b8 Looks like {{.*}} doesn't match the empty string. Fix test.
llvm-svn: 185650
2013-07-04 15:29:20 +00:00
Rafael Espindola 7ac579a3f8 Relax pattern to accept a signext on ppc64.
llvm-svn: 185649
2013-07-04 15:25:05 +00:00
Rafael Espindola be8a91b771 Replace 'grep foo | count 0' with 'not grep foo'.
This avoids depending on pipefail not being used.

llvm-svn: 185648
2013-07-04 15:22:16 +00:00
Rafael Espindola 0cf7c93849 Remove test for the old debug format which was XFAILed since 2009.
llvm-svn: 185647
2013-07-04 15:14:31 +00:00
Rafael Espindola 80a99478bd Convert test to FileCheck.
llvm-svn: 185645
2013-07-04 15:08:20 +00:00
Rafael Espindola 87627034a1 Add missing expected-warning.
llvm-svn: 185644
2013-07-04 15:04:25 +00:00
Rafael Espindola 3a228ee60c Remove more unused uses of -verify.
llvm-svn: 185643
2013-07-04 14:58:42 +00:00
Rafael Espindola 550f263dcf Remove unused -verify.
llvm-svn: 185641
2013-07-04 14:51:11 +00:00
Alexander Kornienko 1efe0a07bb Fixed typo: NoneComment -> NonComment, no other changes.
llvm-svn: 185640
2013-07-04 14:47:51 +00:00
Rafael Espindola e703c0194c clang -cc1 has no -fno-unit-at-a-time or -funit-at-a-time. Fix test.
llvm-svn: 185639
2013-07-04 14:42:44 +00:00
Rafael Espindola a5695db67d Use a clang -cc1 option instead of -m32 and remove tcl quotes.
llvm-svn: 185637
2013-07-04 14:36:22 +00:00
Rafael Espindola 1011024e37 Remove tcl quotes.
llvm-svn: 185636
2013-07-04 14:30:41 +00:00
Rafael Espindola 450eb99c89 Convert test to FileCheck.
llvm-svn: 185635
2013-07-04 14:28:33 +00:00
Rafael Espindola 00db4c6f00 Replace void with int to make this a valid C++ file.
The test was passing because clang would still print the ast before exiting
with an error. Since that didn't seem to be the intent of the test, I change
the test instead of adding 'not' to the command line.

llvm-svn: 185634
2013-07-04 14:25:25 +00:00
Rafael Espindola 5dac06ff4b Remove old test.
It was trivially passing because of the tcl quotes and we have better datalayout
tests.

llvm-svn: 185630
2013-07-04 14:20:52 +00:00
Rafael Espindola d1d617593b Remove old test.
It was not clear what was being tested and the test was trivially passing
by getting grep confused with tcl quotes.

llvm-svn: 185629
2013-07-04 14:18:32 +00:00
Rafael Espindola 53e40e4b06 Clang has no nested function support. Delete this test.
llvm-svn: 185628
2013-07-04 14:13:53 +00:00
Craig Topper 9c525eec94 Use SmallVectorImpl::const_iterator instead of SmallVector to avoid specifying the vector size.
llvm-svn: 185623
2013-07-04 13:11:33 +00:00
Alexander Kornienko 5861171893 Added AlwaysBreakBeforeMultilineStrings option.
Summary:
Always breaking before multiline strings can help format complex
expressions containing multiline strings more consistently, and avoid consuming
too much horizontal space.

Reviewers: djasper

Reviewed By: djasper

CC: cfe-commits, klimek

Differential Revision: http://llvm-reviews.chandlerc.com/D1097

llvm-svn: 185622
2013-07-04 12:02:44 +00:00
Richard Smith 6d6676b9d1 Add test for PR4997. This has been fixed for a while.
llvm-svn: 185614
2013-07-04 04:10:46 +00:00
Richard Smith e65319009c Testcase for PR14130, which was probably fixed by r183859.
llvm-svn: 185613
2013-07-04 04:04:20 +00:00
Craig Topper af6bd1b87f Add a space between closing template '>' to unbreak build.
llvm-svn: 185611
2013-07-04 03:15:42 +00:00
Craig Topper 2341c0d3b2 Use SmallVectorImpl instead of SmallVector for iterators and references to avoid specifying the vector size unnecessarily.
llvm-svn: 185610
2013-07-04 03:08:24 +00:00
Anna Zaks a42fb525e4 [analyzer] Suppress reports reported in std::list
The motivation is to suppresses false use-after-free reports that occur when calling
std::list::pop_front() or std::list::pop_back() twice. The analyzer does not
reason about the internal invariants of the list implementation, so just do not report
any of warnings in std::list.

Fixes radar://14317928.

llvm-svn: 185609
2013-07-04 02:38:10 +00:00
Anna Zaks 5673b6567a [analyzer] Make sure that inlined defensive checks work on div by zero.
This suppresses a false positive in std::hash_map.
Fixes  radar://14255587.

llvm-svn: 185608
2013-07-04 02:38:06 +00:00
Richard Smith c87b938e17 Part of PR15673: If a function template has a default argument in which
substitution failed, report that as a substitution failure rather than
pretending that there was no default argument.

The test cases in PR15673 have exposed some pre-existing poor diagnostics here.

llvm-svn: 185604
2013-07-04 01:01:24 +00:00
Richard Trieu 949abc327d Improve -Wlogical-not-parentheses to catch when the not is applied to an enum.
llvm-svn: 185602
2013-07-04 00:50:18 +00:00
Fariborz Jahanian 43bbaaca80 [ObjectiveC migrator] relax the rules for setter/getter
types when deciding on validity of a property
inclusion. // rdar://14345082

llvm-svn: 185599
2013-07-04 00:24:32 +00:00
Richard Smith cde3fd87e0 PR16480: Reimplement token-caching for constructor initializer lists. This
previously didn't work if a mem-initializer-id had a template argument which
contained parentheses or braces.

We now implement a simple rule: just look for a ') {' or '} {' that is not
nested. The '{' is assumed to start the function-body. There are still two
cases which we misparse, where the ') {' comes from a compound literal or
from a lambda. The former case is not valid C++, and the latter will probably
not be valid C++ once DR1607 is resolved, so these seem to be of low value,
and we do not regress on them with this change. EDG and g++ also misparse
both of these cases.

llvm-svn: 185598
2013-07-04 00:13:48 +00:00
Fariborz Jahanian de66100889 Minor refactoring of my last patch.
llvm-svn: 185593
2013-07-03 23:44:11 +00:00
Fariborz Jahanian a7437f0227 [ObjectiveC Migration]: Provide knobs for
migrating setter/getter methods to an eventual
property declaraiton. This is wip.
// rdar://14345082

llvm-svn: 185591
2013-07-03 23:05:00 +00:00
Roman Divacky ac6f5f4015 Check LongDoubleFormat instead of just Width as this is PowerPC specific.
llvm-svn: 185584
2013-07-03 21:08:41 +00:00
Bill Schmidt 58ae47bf10 [PowerPC] FreeBSD does not require f128 in its data layout string.
Long double is 64 bits on FreeBSD PPC, so the f128 entry is superfluous.

llvm-svn: 185582
2013-07-03 21:03:06 +00:00
Bill Schmidt 99a084b7ae "bool" should be a context-sensitive keyword in Altivec mode.
PR16456 reported that Clang implements a hybrid between AltiVec's
"Keyword and Predefine Method" and its "Context Sensitive Keyword
Method," where "bool" is always a keyword, but "vector" and "pixel"
are context-sensitive keywords.  This isn't permitted by the AltiVec
spec.  For consistency with gcc, this patch implements the Context
Sensitive Keyword Method for bool, and stops treating true and false
as keywords in Altivec mode.

The patch removes KEYALTIVEC as a trigger for defining these keywords
in include/clang/Basic/TokenKinds.def, and adds logic for "vector
bool" that mirrors the existing logic for "vector pixel."  The test
case is taken from the bug report.

llvm-svn: 185580
2013-07-03 20:54:09 +00:00
Roman Divacky b6debb6ab8 Add support for TF/TC modes available on eg. PowerPC64.
llvm-svn: 185578
2013-07-03 20:48:06 +00:00
Manman Ren 825e8e41ad Update testing cases to check dwarf-2 for Darwin.
llvm-svn: 185577
2013-07-03 20:45:07 +00:00
Chad Rosier 7ed67722e5 Revert r185557 as it was a bit (a lot) premature.
llvm-svn: 185574
2013-07-03 20:37:50 +00:00
Roman Divacky 13b586f298 Dont define __LONG_DOUBLE_128__ unless LongDoubleWidth is really 128bits width.
It's not the case on ie. FreeBSD.

llvm-svn: 185572
2013-07-03 19:45:54 +00:00
Eli Bendersky 9b64ec18c1 Add target hook CodeGen queries when generating builtin pow*.
Without fmath-errno, Clang currently generates calls to @llvm.pow.* intrinsics
when it sees pow*(). This may not be suitable for all targets (for
example le32/PNaCl), so the attached patch adds a target hook that CodeGen
queries. The target can state its preference for having or not having the
intrinsic generated. Non-PNaCl behavior remains unchanged;
PNaCl-specific test added.

llvm-svn: 185568
2013-07-03 19:19:12 +00:00
Richard Smith a9d6a0e1f8 Enable -ffreestanding for this test, to avoid #include_next'ing the system's
<stdint.h> (which might not exist or might not work).

llvm-svn: 185565
2013-07-03 18:35:53 +00:00
Bill Schmidt 3d11a3061a Provide test case for commit r185544.
Verify that assembling an empty file does not auto-include altivec.h.

llvm-svn: 185563
2013-07-03 18:21:12 +00:00
Eli Friedman a07aa69771 Add file suffix for assembler-with-cpp.
Fixes crash when trying to recover from a crash on an assembler-with-cpp
file.  (Not sure how to write a testcase.)

llvm-svn: 185562
2013-07-03 18:06:11 +00:00
Chad Rosier fbaff8489d Chris has agree to take part ownership of the driver.
llvm-svn: 185557
2013-07-03 17:25:50 +00:00
Jordan Rose 1187b95bd1 [scan-build] Log compiler invocation to stderr, not stdout.
This is important for preprocessing steps, which may output to stdout.

Also, change ENV accesses using barewords to use string keys instead.

PR16414

llvm-svn: 185555
2013-07-03 16:42:02 +00:00
Jordan Rose b8859f6791 With CLANG_ENABLE_STATIC_ANALYZER=0, link clang properly and skip clang-check.
Previously, the CMake build still tried to link clang against the static
analyzer libraries, even if CLANG_ENABLE_STATIC_ANALYZER was off.
Furthermore, clang-check depends on the analyzer, so it should be disabled
(in both CMake and configure builds).

In theory, clang-check could be made to conditionally include analyzer
support (like clang itself), but for now this at least gets a CMake ALL_BUILD
working.

Patch by Stephen Kelly, modified by me.

llvm-svn: 185548
2013-07-03 16:20:29 +00:00
Bill Schmidt b3b804e442 Fix PR16454: Don't #include altivec.h when preprocessing assembly.
When the -maltivec flag is present, altivec.h is auto-included for the
compilation.  This is not appropriate when the job action is to
preprocess a file containing assembly code.  So don't do that.

I was unable to convert the test in the bug report into a regression
test.  The original symptom was exposed with:

  % touch x.S
  % ./bin/clang -target powerpc64-unknown-linux-gnu -maltivec -S -o - x.S

I tried this test (and numerous variants) on a PPC64 system:

----------------------------------------------------------------------------
// RUN: touch %t
// RUN: %clang -maltivec -S %t -o - | FileCheck %s

// Verify that assembling an empty file does not auto-include altivec.h.

// CHECK-NOT: static vector
----------------------------------------------------------------------------

However, this test passes for some reason even on a clang built
without the fix.  I'd be happy to add a test case but at this point
I'm not able to figure one out, and I don't want to hold up the patch
unnecessarily.  Please let me know if you have ideas.

Thanks,
Bill

llvm-svn: 185544
2013-07-03 15:36:02 +00:00
Serge Pavlov f432f85777 Test case for PR7887 - failed with asm("")
llvm-svn: 185543
2013-07-03 15:32:48 +00:00
Rafael Espindola 10a63c2f03 We don't need to know the OpenSUSE version, so don't parse it.
Patch by Johannes Obermayr.

llvm-svn: 185537
2013-07-03 14:14:00 +00:00
Daniel Jasper 095737413f Prevent error message when formatting an empty file.
This fixes llvm.org/PR16514.

llvm-svn: 185531
2013-07-03 12:22:18 +00:00
Daniel Jasper 7ae41cdd22 Don't insert confusing line breaks in comparisons.
In general, clang-format breaks after an operator if the LHS spans
multiple lines. Otherwise, this can lead to confusing effects and
effectively hide the operator precendence, e.g. in

if (aaaaaaaaaaaaaa ==
        bbbbbbbbbbbbbb && c) { ...

This patch removes this rule for comparisons, if the LHS is not a binary
expression itself as many users were wondering why clang-format inserts
an unnecessary linebreak.

Before:
if (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(
        aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) >
    5) { ...

After:
if (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(
        aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) > 5) { ...

In the long run, we might:
- Want to do this for other binary expressions as well.
- Do this only if the RHS is short or even only if it is a literal.

llvm-svn: 185530
2013-07-03 10:34:47 +00:00
Pavel Labath f77e736844 [analyzer] Improve handling of noreturn destructors
Summary:
The analyzer incorrectly handled noreturn destructors which were hidden inside
function calls. This happened because NoReturnFunctionChecker only listened for
PostStmt events, which are not executed for destructor calls. I've changed it to
listen to PostCall events, which should catch both cases.

Reviewers: jordan_rose

CC: cfe-commits

Differential Revision: http://llvm-reviews.chandlerc.com/D1056

llvm-svn: 185522
2013-07-03 08:23:49 +00:00
Serge Pavlov b4bbae0703 Fixed test options.
llvm-svn: 185493
2013-07-03 01:43:57 +00:00
Kaelyn Uhrain 10413a46a0 Allow typo correction to try removing nested name specifiers.
The removal is tried by retrying the failed lookup of a correction
candidate with either the MemberContext or SS (CXXScopeSpecifier) or
both set to NULL if they weren't already. If the candidate identifier
is then looked up successfully, make a note in the candidate that the
SourceRange should include any existing nested name specifier even if
the candidate isn't adding a different one (i.e. the candidate has a
NULL NestedNameSpecifier).

Also tweak the diagnostic messages to differentiate between a suggestion
that just replaces the identifer but leaves the existing nested name
specifier intact and one that replaces the entire qualified identifier,
in cases where the suggested replacement is unqualified.

llvm-svn: 185487
2013-07-02 23:47:44 +00:00
Kaelyn Uhrain b18b0c0f16 Look for corrections in enclosing namespaces that require a global NestedNameSpecifier.
CorrectTypo will now see and consider those corrections that are effectively
shadowed by other declarations in a closer context when resolved via an
unqualified lookup. This involves adding any parent namespaces to the set of
namespaces as fully-qualified name specifiers, and also adding potential
corrections that passed name lookup but were rejected by the given
CorrectionCandidateCallback into the set of failed corrections that should be
tried with the set of namespace specifiers.

llvm-svn: 185486
2013-07-02 23:47:35 +00:00
Manman Ren 38db092083 Debug Info: set default to gdwarf-2 for Darwin.
Darwin systems currently do not support dwarf version 3 or above. When we are
ready, we can bump the default to gdwarf-4 for Darwin.

For other systems, the default is dwarf version 3, if everything goes smoothly,
we can bump the version to 4.

rdar://13591116

llvm-svn: 185483
2013-07-02 23:15:25 +00:00
Richard Trieu 1466faf8a6 Redirect the output of a test to a temporary file to prevent messing up
the test environment.

llvm-svn: 185470
2013-07-02 20:49:10 +00:00
James Dennett c5aff0550f Documentation: Update docs for C++ lambdas to more accurately reflect
C++1y init-capture support, and to improve some Doxygen markup.

llvm-svn: 185469
2013-07-02 20:28:47 +00:00
Manman Ren 0d441f1853 Debug Info: clean up usage of Verify.
No functionality change. It should suffice to check the type of a debug info
metadata, instead of calling Verify.

llvm-svn: 185463
2013-07-02 19:01:53 +00:00
Reid Kleckner f0ae35b88c [ms-cxxabi] Mangle variadic template parameter packs
Unlike Itanium, there is no code to indicate the beginning of a
parameter pack.  I tested this with MSVC 2013, which is the only version
that implements variadic templates so far.

This is needed to compile APInt.cpp for the MS C++ ABI.

Reviewers: timurrrr

Differential Revision: http://llvm-reviews.chandlerc.com/D1077

llvm-svn: 185454
2013-07-02 18:10:07 +00:00
Richard Smith 5001ec9190 Add regression test for PR12331.
llvm-svn: 185453
2013-07-02 18:08:50 +00:00
Eli Friedman 95f501284a More fixes for block mangling.
Make sure we properly treat names defined inside a block as local
names.  There are basically three fixes here.  One, correctly
treat blocks as a context where we need to use local-name mangling using
the new isLocalContainerContext helper. Two, make
CXXNameMangler::manglePrefix handle local names in a consistent way.
Three, extend CXXNameMangler::mangleLocalName so it can mangle a block
correctly.

llvm-svn: 185450
2013-07-02 17:52:28 +00:00
Serge Pavlov fb73ec834a Fix to PR15826 - clang hits assert in clang::ASTContext::getASTRecordLayout.
llvm-svn: 185446
2013-07-02 17:31:56 +00:00
Jordan Rose 00deddb6d8 [analyzer] Pointers-to-members are (currently) Locs, not NonLocs.
While we don't model pointers-to-members besides "null" and "non-null",
we were using Loc symbols for valid pointers and NonLoc integers for the
null case. This hit the assert committed in r185401.

Fixed by using a true (Loc) null for null member pointers.

llvm-svn: 185444
2013-07-02 16:50:24 +00:00
Andy Gibbs 456198d6a1 Suppress "control reaches end of non-void function" warning when compiling with gcc.
llvm-svn: 185439
2013-07-02 16:01:56 +00:00
Timur Iskhodzhanov 7f55a455d1 Simplify getting CXXRecordDecl from a base iterator
llvm-svn: 185438
2013-07-02 16:00:40 +00:00
Daniel Jasper a3fc21a0f1 Fix ranges computed by git clang-format.
Before, the computed byte range would include the trailing newline.
clang-format on the other hand counts whitespace as belonging to the
following token, so that git-clang-format inadvertendly reformats the
first unmodified line as well.

It is not entirely clear whether clang-format's behavior itself should
be modified, but for now this seems to be a safe change.

llvm-svn: 185423
2013-07-02 13:20:35 +00:00
Daniel Jasper dba1c5587c Fix formatting of long declarations with const type.
Before (exceeding the column limit):
LoooooooooooooooooooooooooooooooooooooooongType const LoooooooooooooooooooooooooooooooooooooooongVariable;

After:
LoooooooooooooooooooooooooooooooooooooooongType const
LoooooooooooooooooooooooooooooooooooooooongVariable;

llvm-svn: 185418
2013-07-02 09:47:29 +00:00
Pavel Labath 868bebf844 Teach static analyzer about AttributedStmts
Summary:
Static analyzer used to abort when encountering AttributedStmts, because it
asserted that the statements should not appear in the CFG. This is however not
the case, since at least the clang::fallthrough annotation makes it through.

This commit simply makes the analyzer ignore the statement attributes.

CC: cfe-commits

Differential Revision: http://llvm-reviews.chandlerc.com/D1030

llvm-svn: 185417
2013-07-02 09:38:48 +00:00
Eli Friedman 92821745bf Don't skip lambdas when mangling local vars.
This commit rearranges the logic in CXXNameMangler::mangleLocalName and
GetLocalClassDecl so that it doesn't accidentally skip over lambdas.  It
also reduces code duplication a bit.

llvm-svn: 185402
2013-07-02 02:01:18 +00:00
Jordan Rose 686df32216 [analyzer] Explicitly disallow mixed Loc-NonLoc comparisons.
The one bit of code that was using this is gone, and neither C nor C++
actually allows this. Add an assertion and remove dead code.

Found by Matthew Dempsky!

llvm-svn: 185401
2013-07-02 01:37:40 +00:00
Eli Friedman d02bbeb44e Simplify code in mangler.
llvm-svn: 185384
2013-07-01 21:29:48 +00:00
Eli Friedman c48d31c31c Simplify linkage code for static local vars.
The key insight here is that weak linkage for a static local variable
should always mean linkonce_odr, because every file that needs it will
generate a definition.  We don't actually care about the precise linkage
of the parent context.  I feel a bit silly that I didn't realize this before.

llvm-svn: 185381
2013-07-01 20:53:07 +00:00
Eli Friedman 4747c71427 Fix CMakeLists.txt.
Sorry about that.

llvm-svn: 185374
2013-07-01 20:34:51 +00:00
Eli Friedman 7e346a8127 Fix mangling for block literals.
Blocks, like lambdas, can be written in contexts which are required to be
treated as the same under ODR.  Unlike lambdas, it isn't possible to actually
take the address of a block, so the mangling of the block itself doesn't
matter. However, objects like static variables inside a block do need to
be mangled in a consistent way.

There are basically three components here. One, block literals need a
consistent numbering.  Two, objects/types inside a block literal need
to be mangled using it.  Three, objects/types inside a block literal need
to have their linkage computed correctly.

llvm-svn: 185372
2013-07-01 20:22:57 +00:00
Anton Korobeynikov ef4129084a Fix MSP430 builtin types.
Patch by Job Noorman!

llvm-svn: 185362
2013-07-01 19:42:40 +00:00
Daniel Jasper ca7bd720eb Fix incorrect token counting introduced by r185319.
This lead to weird formatting.
Before:
DoSomethingWithVector({ {} /* No data */ }, {
  { 1, 2 }
});
After:
DoSomethingWithVector({ {} /* No data */ }, { { 1, 2 } });

llvm-svn: 185346
2013-07-01 16:43:38 +00:00
Alexander Kornienko aa620e187e Avoid column limit violation in block comments in certain cases.
Summary:
Add penalty when an excessively long line in a block comment can not be
broken on a leading whitespace. Lack of this addition can lead to severe column
width violations when they can be easily avoided.

Reviewers: djasper

Reviewed By: djasper

CC: cfe-commits, klimek

Differential Revision: http://llvm-reviews.chandlerc.com/D1071

llvm-svn: 185337
2013-07-01 13:42:42 +00:00
Daniel Jasper 251b3c9e7e Don't align "} // namespace" comments.
This is not all bad, but people are often surprised by it.

Before:
namespace {
int SomeVariable = 0; // comment
}                     // namespace

After:
namespace {
int SomeVariable = 0; // comment
} // namespace

llvm-svn: 185327
2013-07-01 11:22:57 +00:00
NAKAMURA Takumi 77fcfe70be clang/test/lit.cfg: Improve is_filesystem_case_insensitive() to work properly on cygwin.
Cygwin does not accept the form /CYGDRIVE/X/PATH/TO/FILE against /cygdrive/X/PATH/TO/FILE.
"cygdrive" must be lower-cased.

llvm-svn: 185323
2013-07-01 09:51:55 +00:00
Daniel Jasper bafa6b711a Don't add an extra space before ellipsis after pointers.
Before (for styles where the pointer binds to the type):
template <class... Ts> void Foo(Ts... ts) {}
template <class... Ts> void Foo(Ts* ... ts) {}
After:
template <class... Ts> void Foo(Ts... ts) {}
template <class... Ts> void Foo(Ts*... ts) {}

llvm-svn: 185321
2013-07-01 09:47:25 +00:00
Daniel Jasper 022612db05 Keep space between pointer and block comment.
Before: void f(int */* unused */) {}
After:  void f(int * /* unused */) {}

The previous version seems to be valid C++ code but confuses many syntax
highlighters.

llvm-svn: 185320
2013-07-01 09:34:09 +00:00
Daniel Jasper 7f5d53e55f Fix braced-list detection in lieu of trailing comments.
Before:
DoSomethingWithVector({
} /* No data */);
After:
DoSomethingWithVector({} /* No data */);

llvm-svn: 185319
2013-07-01 09:15:46 +00:00
Sylvestre Ledru 103b51c72e Following the modification introduced in llvm by commit 185311
The build system is currently miss-identifying GNU/kFreeBSD as FreeBSD.
This kind of simplification is sometimes useful, but in general it's not correct. 

As GNU/kFreeBSD is an hybrid system, for kernel-related issues we want to match the
build definitions used for FreeBSD, whereas for userland-related issues we want to
match the definitions used for other systems with Glibc.

The current modification adjusts the build system so that they can be distinguished,
and explicitly adds GNU/kFreeBSD to the build checks in which it belongs.

Fixes bug #16445.

Patch by Robert Millan in the context of Debian.

llvm-svn: 185312
2013-07-01 08:13:34 +00:00
Craig Topper 69b6277a83 Put helper class in anonymous namespace.
llvm-svn: 185306
2013-07-01 06:34:58 +00:00