]> granicus.if.org Git - clang/log
clang
11 years agoTypo correction: _int64 -> __int64.
Warren Hunt [Sat, 28 Sep 2013 00:15:41 +0000 (00:15 +0000)]
Typo correction: _int64 -> __int64.

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

11 years agoImplements some of the more commonly used intrinsics in Intrin.h
Warren Hunt [Fri, 27 Sep 2013 23:57:26 +0000 (23:57 +0000)]
Implements some of the more commonly used intrinsics in Intrin.h
Differential Revision: http://llvm-reviews.chandlerc.com/D1766

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

11 years agoDon't suggest namespaces if the next token is a '.'
Kaelyn Uhrain [Fri, 27 Sep 2013 23:54:23 +0000 (23:54 +0000)]
Don't suggest namespaces if the next token is a '.'

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

11 years agoTBAA: use the same format for scalar TBAA and struct-path aware TBAA.
Manman Ren [Fri, 27 Sep 2013 23:06:41 +0000 (23:06 +0000)]
TBAA: use the same format for scalar TBAA and struct-path aware TBAA.

Struct-path aware TBAA generates tags to specify the access path,
while scalar TBAA only generates tags to scalar types.

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

11 years agoObjectiveC migrator. Infer property from getters only
Fariborz Jahanian [Fri, 27 Sep 2013 22:55:54 +0000 (22:55 +0000)]
ObjectiveC migrator. Infer property from getters only
if property name is a valid identifier in the underlying
language. // rdar://15044184

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

11 years agoImplementation of N3760 which is planned to be voted into C++14's draft
Chandler Carruth [Fri, 27 Sep 2013 22:30:27 +0000 (22:30 +0000)]
Implementation of N3760 which is planned to be voted into C++14's draft
tomorrow is complete.

There is a missing warning due to a serious issue with template
instantiation in Clang (and potentially in the core language).

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

11 years agoFix a bug where we failed to diagnose class template specialization
Chandler Carruth [Fri, 27 Sep 2013 22:14:40 +0000 (22:14 +0000)]
Fix a bug where we failed to diagnose class template specialization
uses.

This fixes one of the two remaining failures to implement [[deprecated]]
as specified for C++14.

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

11 years agoNote that modules are supported for C/Objective-C, and have syntax in ObjC.
Douglas Gregor [Fri, 27 Sep 2013 21:23:28 +0000 (21:23 +0000)]
Note that modules are supported for C/Objective-C, and have syntax in ObjC.

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

11 years agodocs: Document CXXLiteralOperatorName and CXXUsingDirective
Justin Bogner [Fri, 27 Sep 2013 21:10:54 +0000 (21:10 +0000)]
docs: Document CXXLiteralOperatorName and CXXUsingDirective

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

11 years agodocs: Remove note about Identifiers being used for C++ operators
Justin Bogner [Fri, 27 Sep 2013 21:10:51 +0000 (21:10 +0000)]
docs: Remove note about Identifiers being used for C++ operators

C++ operators are represented by CXXOperatorName now, which is already
documented.

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

11 years agoUpdate the help text.
Rafael Espindola [Fri, 27 Sep 2013 20:42:38 +0000 (20:42 +0000)]
Update the help text.

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

11 years agoReplace -fobjc-default-synthesize-properties with disable-objc-default-synthesize...
Rafael Espindola [Fri, 27 Sep 2013 20:21:48 +0000 (20:21 +0000)]
Replace -fobjc-default-synthesize-properties with disable-objc-default-synthesize-properties.

We want the modern behavior most of the time, so inverting the option simplifies
the driver and the tests.

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

11 years agoImplement N3760, support for the [[deprecated]] attribute.
Chandler Carruth [Fri, 27 Sep 2013 20:20:17 +0000 (20:20 +0000)]
Implement N3760, support for the [[deprecated]] attribute.

This motion appears to have consensus in the C++ committee and is
expected to be voted into the C++14 draft tomorrow during the formal
vote.

No extension warning in C++11 as attributes not specified in the
standard using the standard syntax in C++11 have implementation defined
meaning, and we define the meaning proposed for C++14.

There is one bug exposed as we do not warn on a deprecated template
specialization. I've left a FIXME in the test case and will dig into
that next.

Also, I will add a few more exhaustive test cases of the other features
specified for this attribute in a follow-up commit.

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

11 years agoMark variable template implementation as complete. Nearly all of the credit
Richard Smith [Fri, 27 Sep 2013 20:19:41 +0000 (20:19 +0000)]
Mark variable template implementation as complete. Nearly all of the credit
here goes to Larisse Voufo.

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

11 years agoVariable templates: handle instantiation of static data member templates
Richard Smith [Fri, 27 Sep 2013 20:14:12 +0000 (20:14 +0000)]
Variable templates: handle instantiation of static data member templates
appropriately, especially when they appear within class templates.

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

11 years agoComment out links for papers that aren't up yet.
Richard Smith [Fri, 27 Sep 2013 19:55:03 +0000 (19:55 +0000)]
Comment out links for papers that aren't up yet.

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

11 years agoDon't give suggest things like function names on the left side of "=".
Kaelyn Uhrain [Fri, 27 Sep 2013 19:40:16 +0000 (19:40 +0000)]
Don't give suggest things like function names on the left side of "=".

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

11 years agoAvoid the hard-coded limit on the number of typo corrections attempted.
Kaelyn Uhrain [Fri, 27 Sep 2013 19:40:12 +0000 (19:40 +0000)]
Avoid the hard-coded limit on the number of typo corrections attempted.

Move some tests from typo-correction.cpp to typo-correction-pt2.cpp
because they were running afoul of the hard-coded limit of 20 typos
corrected. Some of the tests after it were still working due to the
limit not applying to cached corrections and in cases where a non-NULL
MemberContext is passed in to Sema::CorrectTypo.  Most of the moved tests
still passed after being moved, but the test involving "data_struct" had
only been passing because the test had exceeded that limit so a fix for
it is also included (most of the changes to ParseStmt.cpp are shared with
and originated from another typo correction impovement that was split
into a separate commit).

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

11 years agoCache the location of failed typo corrections so that typo correction
Kaelyn Uhrain [Fri, 27 Sep 2013 19:40:08 +0000 (19:40 +0000)]
Cache the location of failed typo corrections so that typo correction
isn't repeatedly attempted for the same identifier at the same location.

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

11 years agoFix typo: Dellocation.
Benjamin Kramer [Fri, 27 Sep 2013 19:35:09 +0000 (19:35 +0000)]
Fix typo: Dellocation.

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

11 years agoFix formatting goof.
Richard Smith [Fri, 27 Sep 2013 19:12:22 +0000 (19:12 +0000)]
Fix formatting goof.

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

11 years agoUpdate status:
Richard Smith [Fri, 27 Sep 2013 19:11:33 +0000 (19:11 +0000)]
Update status:
 * generic lambdas are now partially supported
 * add papers from formal motions in committee

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

11 years agoclang-cl: pass /FI options to fallback
Hans Wennborg [Fri, 27 Sep 2013 17:54:18 +0000 (17:54 +0000)]
clang-cl: pass /FI options to fallback

We started parsing /FI in r191442, and now we can pass it on to the
fallback too.

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

11 years agoAdding pre/post conditions for some Replacement handling functions
Edwin Vane [Fri, 27 Sep 2013 17:52:45 +0000 (17:52 +0000)]
Adding pre/post conditions for some Replacement handling functions

The vector version of shiftedCodePosition() requires Replacements to be
in sorted order.

Turned existing comment about sorting for deduplicate() into an exact
post condition.

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

11 years agoSourceManager: Open code isInMainFile.
Benjamin Kramer [Fri, 27 Sep 2013 17:12:50 +0000 (17:12 +0000)]
SourceManager: Open code isInMainFile.

- We really shouldn't compute line numbers for every file that is asked if it's
  the main file, it destroys the lazy computation.
- Invalid locations are no longer accounted to the main file, no other
  functionality change.

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

11 years agoQuick-fix the test for no-asserts build
Timur Iskhodzhanov [Fri, 27 Sep 2013 17:07:56 +0000 (17:07 +0000)]
Quick-fix the test for no-asserts build

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

11 years agoRemove method that always returns true.
Rafael Espindola [Fri, 27 Sep 2013 16:58:26 +0000 (16:58 +0000)]
Remove method that always returns true.

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

11 years ago[analyzer] Allow pre/post-statement checkers for UnaryOperator.
Jordan Rose [Fri, 27 Sep 2013 16:47:52 +0000 (16:47 +0000)]
[analyzer] Allow pre/post-statement checkers for UnaryOperator.

Found by Arthur Yoo.

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

11 years agoFix the test files by removing the unnecessary -emit-llvm flag (should address Matt...
Faisal Vali [Fri, 27 Sep 2013 16:45:48 +0000 (16:45 +0000)]
Fix the test files by removing the unnecessary -emit-llvm flag (should address Matt Beaumont-Gay's concern regarding failure on a read-only filesystem)

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

11 years agoAdded a comment and another test for the UT_ForIndentation option
Alexander Kornienko [Fri, 27 Sep 2013 16:40:11 +0000 (16:40 +0000)]
Added a comment and another test for the UT_ForIndentation option

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

11 years agoUpdated examples of UseTab option
Alexander Kornienko [Fri, 27 Sep 2013 16:19:25 +0000 (16:19 +0000)]
Updated examples of UseTab option

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

11 years agoUpdated clang-format style options doc.
Alexander Kornienko [Fri, 27 Sep 2013 16:16:55 +0000 (16:16 +0000)]
Updated clang-format style options doc.

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

11 years agoImplemented tab usage only for indentation (http://llvm.org/PR17363)
Alexander Kornienko [Fri, 27 Sep 2013 16:14:22 +0000 (16:14 +0000)]
Implemented tab usage only for indentation (http://llvm.org/PR17363)

Summary:
Changed UseTab to be a enum with three options: Never, Always,
ForIndentation (true/false are still supported when reading .clang-format).
IndentLevel should currently be propagated correctly for all tokens, except for
block comments. Please take a look at the general idea before I start dealing
with block comments.

Reviewers: klimek, djasper

Reviewed By: klimek

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

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

11 years agoAbstract out the emission of vtables, add basic support for vtable emission when...
Timur Iskhodzhanov [Fri, 27 Sep 2013 14:48:01 +0000 (14:48 +0000)]
Abstract out the emission of vtables, add basic support for vtable emission when using -cxx-abi microsoft

Reviewed at http://llvm-reviews.chandlerc.com/D1532

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

11 years agoCorrectly indent with tabs when whitespace starts from the column not divisible by...
Alexander Kornienko [Fri, 27 Sep 2013 09:45:40 +0000 (09:45 +0000)]
Correctly indent with tabs when whitespace starts from the column not divisible by TabWidth.

Summary:
The width of the first inserted tab character depends on the initial
column, so we need to handle the first tab in a special manner.

Reviewers: klimek, djasper

Reviewed By: klimek

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

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

11 years agoclang-format: Improve formatting of functions with multiple trailing tokens.
Daniel Jasper [Fri, 27 Sep 2013 08:29:16 +0000 (08:29 +0000)]
clang-format: Improve formatting of functions with multiple trailing tokens.

Before:
  void SomeFunction(aaaaaaaaaaaaaaaaaaaaaaaaaa,
                    aaaaaaaaaaaaaaaaaaaaaaaaaa) override
  final;

After:
  void SomeFunction(aaaaaaaaaaaaaaaaaaaaaaaaaa,
                    aaaaaaaaaaaaaaaaaaaaaaaaaa) override final;

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

11 years agoAST: Handle multidimensional arrays inside of __uuidof()
David Majnemer [Fri, 27 Sep 2013 07:57:34 +0000 (07:57 +0000)]
AST: Handle multidimensional arrays inside of __uuidof()

We previously handled one-dimensional arrays but didn't consider the
general case.  The fix is simple: keep going through subsequent
dimensions until we get to the base element.

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

11 years agoclang-format: Fix formatting bug with comment in weird place.
Daniel Jasper [Fri, 27 Sep 2013 07:49:08 +0000 (07:49 +0000)]
clang-format: Fix formatting bug with comment in weird place.

Before:
  template <typename T>
  // T should be one of {A, B}.
      void f() {}

After:
  template <typename T>
  // T should be one of {A, B}.
  void f() {}

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

11 years agoAST: Handle qualified array types in typeid() expressions
David Majnemer [Fri, 27 Sep 2013 07:04:31 +0000 (07:04 +0000)]
AST: Handle qualified array types in typeid() expressions

The intent of getTypeOperand() was to yield an unqualified type.
However QualType::getUnqualifiedType() does not strip away qualifiers on
arrays.

N.B.  This worked fine when typeid() was applied to an expression
because we would inject as implicit cast to the unqualified array type
in the AST.

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

11 years agoAdd -fno-unsigned-char and ignore it. We already support -fno-signed-char, add
Nick Lewycky [Fri, 27 Sep 2013 05:06:31 +0000 (05:06 +0000)]
Add -fno-unsigned-char and ignore it. We already support -fno-signed-char, add
both flags to the driver test.

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

11 years agoNumericLiteralParser::ParseNumberStartingWithZero(): Try to appease MSC16's miscompil...
NAKAMURA Takumi [Fri, 27 Sep 2013 04:42:28 +0000 (04:42 +0000)]
NumericLiteralParser::ParseNumberStartingWithZero(): Try to appease MSC16's miscompilation.

Investigating yet. It seems msc16 miscompiles s[1] to be folded.

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

11 years agoSema: Respect -fdelayed-template-parsing when parsing constexpr functions
David Majnemer [Fri, 27 Sep 2013 04:14:12 +0000 (04:14 +0000)]
Sema: Respect -fdelayed-template-parsing when parsing constexpr functions

Functions declared as constexpr must have their parsing delayed in
-fdelayed-template-parsing mode so as not to upset later template
instantiation.

N.B. My reading of the standard makes it seem like delayed template
parsing is at odds with constexpr.  We may want to make refinements in
other places in clang to make constexpr play nicer with this feature.

This fixes PR17334.

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

11 years agoRemove some stray underscores from copyright block. Fix first line length to match...
Craig Topper [Fri, 27 Sep 2013 03:57:18 +0000 (03:57 +0000)]
Remove some stray underscores from copyright block. Fix first line length to match length of the one after the copyright block.

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

11 years agoObjectiveC migrator: Donlt annotate NS_RETURNS_INNER_POINTER
Fariborz Jahanian [Thu, 26 Sep 2013 22:43:41 +0000 (22:43 +0000)]
ObjectiveC migrator: Donlt annotate NS_RETURNS_INNER_POINTER
on class methods, as it makes no sense. // rdar://15069200

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

11 years agoObjectiveC migrator: function pointer is not an
Fariborz Jahanian [Thu, 26 Sep 2013 21:43:47 +0000 (21:43 +0000)]
ObjectiveC migrator: function pointer is not an
inner pointer for annotation to
objc_returns_inner_pointer purposes.
// rdar://15044991

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

11 years agoDebug info: Fix a crash when trying to construct a type with redundant
Adrian Prantl [Thu, 26 Sep 2013 21:35:50 +0000 (21:35 +0000)]
Debug info: Fix a crash when trying to construct a type with redundant
ownership qualifiers.
Fixes rdar://problem/14990656.

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

11 years agoRemove an unused variable - thanks to Nick Lewycky for pointing this out!
Faisal Vali [Thu, 26 Sep 2013 21:32:23 +0000 (21:32 +0000)]
Remove an unused variable - thanks to Nick Lewycky for pointing this out!

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

11 years agoFix error recovery when a return type correction includes a new name specifier.
Kaelyn Uhrain [Thu, 26 Sep 2013 21:13:05 +0000 (21:13 +0000)]
Fix error recovery when a return type correction includes a new name specifier.

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

11 years agoFix up fallout from r187156.
Bob Wilson [Thu, 26 Sep 2013 21:00:51 +0000 (21:00 +0000)]
Fix up fallout from r187156.

The previous change caused the driver to translate -Wa,-L to the
-msave-temp-labels option for cc1as, but cc1as did not accept that option.
This patch follows the same approach used for similar options (-relax-all,
-noexecstack) in the previous patch.

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

11 years agoImplement a rudimentary form of generic lambdas.
Faisal Vali [Thu, 26 Sep 2013 19:54:12 +0000 (19:54 +0000)]
Implement a rudimentary form of generic lambdas.

Specifically, the following features are not included in this commit:
  - any sort of capturing within generic lambdas
  - generic lambdas within template functions and nested
    within other generic lambdas
  - conversion operator for captureless lambdas
  - ensuring all visitors are generic lambda aware
  (Although I have gotten some useful feedback on my patches of the above and will be incorporating that as I submit those patches for commit)

As an example of what compiles through this commit:

template <class F1, class F2>
struct overload : F1, F2 {
    using F1::operator();
    using F2::operator();
    overload(F1 f1, F2 f2) : F1(f1), F2(f2) { }
  };

  auto Recursive = [](auto Self, auto h, auto ... rest) {
    return 1 + Self(Self, rest...);
  };
  auto Base = [](auto Self, auto h) {
      return 1;
  };
  overload<decltype(Base), decltype(Recursive)> O(Base, Recursive);
  int num_params =  O(O, 5, 3, "abc", 3.14, 'a');

Please see attached tests for more examples.

This patch has been reviewed by Doug and Richard.  Minor changes (non-functionality affecting) have been made since both of them formally looked at it, but the changes involve removal of supernumerary return type deduction changes (since they are now redundant, with richard having committed a recent patch to address return type deduction for C++11 lambdas using C++14 semantics).

Some implementation notes:

  - Add a new Declarator context => LambdaExprParameterContext to
    clang::Declarator to allow the use of 'auto' in declaring generic
    lambda parameters

  - Add various helpers to CXXRecordDecl to facilitate identifying
    and querying a closure class

  - LambdaScopeInfo (which maintains the current lambda's Sema state)
    was augmented to house the current depth of the template being
    parsed (id est the Parser calls Sema::RecordParsingTemplateParameterDepth)
    so that SemaType.cpp::ConvertDeclSpecToType may use it to immediately
    generate a template-parameter-type when 'auto' is parsed in a generic
    lambda parameter context.  (i.e we do NOT use AutoType deduced to
    a template parameter type - Richard seemed ok with this approach).
    We encode that this template type was generated from an auto by simply
    adding $auto to the name which can be used for better diagnostics if needed.

  - SemaLambda.h was added to hold some common lambda utility
    functions (this file is likely to grow ...)

  - Teach Sema::ActOnStartOfFunctionDef to check whether it
    is being called to instantiate a generic lambda's call
    operator, and if so, push an appropriately prepared
    LambdaScopeInfo object on the stack.

  - various tests were added - but much more will be needed.

There is obviously more work to be done, and both Richard (weakly) and Doug (strongly)
have requested that LambdaExpr be removed form the CXXRecordDecl LambdaDefinitionaData
in a future patch which is forthcoming.

A greatful thanks to all reviewers including Eli Friedman, James Dennett,
and especially the two gracious wizards (Richard Smith and Doug Gregor)
who spent hours providing feedback (in person in Chicago and on the mailing lists).
And yet I am certain that I have allowed unidentified bugs to creep in; bugs, that I will do my best to slay, once identified!

Thanks!

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

11 years agoFix a bug in the typo correction replacement location.
Kaelyn Uhrain [Thu, 26 Sep 2013 19:10:34 +0000 (19:10 +0000)]
Fix a bug in the typo correction replacement location.

I noticed the wrong text was being replaced with the correction while
working on expanding the "namespace-aware" typo correction to include
classes.

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

11 years agoTeach typo correction to look inside of classes like it does namespaces.
Kaelyn Uhrain [Thu, 26 Sep 2013 19:10:29 +0000 (19:10 +0000)]
Teach typo correction to look inside of classes like it does namespaces.

Unlike with namespaces, searching inside of classes requires also
checking the access to correction candidates (i.e. don't suggest a
correction to a private class member for a correction occurring outside
that class and its methods or friends).

Included is a small (one line) fix for a bug, that was uncovered while
cleaning up the unit tests, where the decls from a TypoCorrection candidate
were preserved in new TypoCorrection candidates that are derived (copied)
from the old TypoCorrection--notably when creating a new candidate by
changing the NestedNameSpecifier associated with the base idenitifer.

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

11 years agoAdd macro test from N3781.
Richard Smith [Thu, 26 Sep 2013 18:15:22 +0000 (18:15 +0000)]
Add macro test from N3781.

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

11 years agoPer updates to D3781, allow underscore under ' in a pp-number, and allow ' in a ...
Richard Smith [Thu, 26 Sep 2013 18:13:20 +0000 (18:13 +0000)]
Per updates to D3781, allow underscore under ' in a pp-number, and allow ' in a #line directive.

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

11 years agoclang-cl: Add /FI (forced include) as an alias for -include
Reid Kleckner [Thu, 26 Sep 2013 17:41:14 +0000 (17:41 +0000)]
clang-cl: Add /FI (forced include) as an alias for -include

Patch by Jeff Muizelaar, with added test case.

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

11 years ago[driver] Ignore -fno-var-tracking; it's a GCC option we don't support.
Jordan Rose [Thu, 26 Sep 2013 17:03:34 +0000 (17:03 +0000)]
[driver] Ignore -fno-var-tracking; it's a GCC option we don't support.

-fvar-tracking (which IIUC is on by default in GCC) will still generate
an error.

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

11 years agoRemove fno_builtin_strcat and fno_builtin_strcpy.
Rafael Espindola [Thu, 26 Sep 2013 16:45:27 +0000 (16:45 +0000)]
Remove fno_builtin_strcat and fno_builtin_strcpy.

They are already handled by the generic fno_bultin_, which also
avoids unused warnings.

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

11 years agoMark an impossible path as unreachable to pacify GCC.
Benjamin Kramer [Thu, 26 Sep 2013 16:36:08 +0000 (16:36 +0000)]
Mark an impossible path as unreachable to pacify GCC.

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

11 years agoRemove -fbuiltin-strcat and -fbuiltin-strcpy.
Rafael Espindola [Thu, 26 Sep 2013 16:21:53 +0000 (16:21 +0000)]
Remove -fbuiltin-strcat and -fbuiltin-strcpy.

These options don't exist in gcc and clang was not handling them.

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

11 years agoIgnore unknown -fno-builtin-*.
Rafael Espindola [Thu, 26 Sep 2013 16:15:40 +0000 (16:15 +0000)]
Ignore unknown -fno-builtin-*.

This matches gcc's behavior.

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

11 years agoRemove unused parameter.
Rafael Espindola [Thu, 26 Sep 2013 15:52:26 +0000 (15:52 +0000)]
Remove unused parameter.

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

11 years agoIgnore some -f options that are supported by gcc.
Rafael Espindola [Thu, 26 Sep 2013 13:10:14 +0000 (13:10 +0000)]
Ignore some -f options that are supported by gcc.

It is possible that we should say some of these are unsupported, but this is
not any worse than the old behavior of ignoring all unknown -f options.

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

11 years agoRemove tabs.
Benjamin Kramer [Thu, 26 Sep 2013 12:16:47 +0000 (12:16 +0000)]
Remove tabs.

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

11 years agoFix buildbot breakage.
Richard Smith [Thu, 26 Sep 2013 05:57:03 +0000 (05:57 +0000)]
Fix buildbot breakage.

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

11 years agoReplace a bool with an enum for clarity, based on review comment from James Dennett.
Richard Smith [Thu, 26 Sep 2013 04:19:11 +0000 (04:19 +0000)]
Replace a bool with an enum for clarity, based on review comment from James Dennett.

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

11 years agoIf a partial specialization of a member template is declared within a class
Richard Smith [Thu, 26 Sep 2013 03:49:48 +0000 (03:49 +0000)]
If a partial specialization of a member template is declared within a class
template and defined outside it, don't instantiate it twice when instantiating
the surrounding class template specialization. That would cause us to reject
the code because we think two partial specializations instantiated to produce
the same signature.

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

11 years agoImplement C++1y digit separator proposal (' as a digit separator). This is not
Richard Smith [Thu, 26 Sep 2013 03:33:06 +0000 (03:33 +0000)]
Implement C++1y digit separator proposal (' as a digit separator). This is not
yet approved by full committee, but was unanimously supported by EWG.

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

11 years ago[OPENMP] Improved variable lookup procedure for threadprivate variables.
Alexey Bataev [Thu, 26 Sep 2013 03:24:06 +0000 (03:24 +0000)]
[OPENMP] Improved variable lookup procedure for threadprivate variables.

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

11 years agoProvide inline definitions of _Unwind_GetIP etc. for ARM in unwind.h
Hans Wennborg [Wed, 25 Sep 2013 22:34:03 +0000 (22:34 +0000)]
Provide inline definitions of _Unwind_GetIP etc. for ARM in unwind.h

These symbols were showing up as undefined when trying to link programs on
Android. We should match libgcc's behaviour and provide inline definitions
of these on ARM.

It seems unwind.h on ARM/Darwin doesn't provide inline definitions, so we
just declare them for that platform.

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

11 years agoRemove unused param from MicrosoftMangle::mangleCallingConvention()
Reid Kleckner [Wed, 25 Sep 2013 22:28:52 +0000 (22:28 +0000)]
Remove unused param from MicrosoftMangle::mangleCallingConvention()

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

11 years agoUpdate NumTypeBits on Type to match the actual number of used bits.
Mark Lacey [Wed, 25 Sep 2013 22:25:21 +0000 (22:25 +0000)]
Update NumTypeBits on Type to match the actual number of used bits.

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

11 years agoObjectiveC: Handle the case of qualifying protocols
Fariborz Jahanian [Wed, 25 Sep 2013 19:36:32 +0000 (19:36 +0000)]
ObjectiveC: Handle the case of qualifying protocols
declared in a typedef declaraton used as super
class of an ObjC class. Curretnly, these protocols
are dropped from the class hierarchy. Test shows that
it is now included. // rdar://15051465

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

11 years agoProduce an error for unknown -f options.
Rafael Espindola [Wed, 25 Sep 2013 19:07:08 +0000 (19:07 +0000)]
Produce an error for unknown -f options.

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

11 years agoPR17359: Fix off-by-one OOB on _Pragma("") and an unescaping bug
Reid Kleckner [Wed, 25 Sep 2013 16:42:48 +0000 (16:42 +0000)]
PR17359: Fix off-by-one OOB on _Pragma("") and an unescaping bug

Previously the code would reduce a run of backslashes to a single
backslash, and now it will properly leave behind every other backslash.

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

11 years ago[analyzer] Handle destructors for the argument to C++ 'delete'.
Jordan Rose [Wed, 25 Sep 2013 16:06:17 +0000 (16:06 +0000)]
[analyzer] Handle destructors for the argument to C++ 'delete'.

Now that the CFG includes nodes for the destructors in a delete-expression,
process them in the analyzer using the same common destructor interface
currently used for local, member, and base destructors. Also, check for when
the value is known to be null, in which case no destructor is actually run.

This does not yet handle destructors for deleted /arrays/, which may need
more CFG work. It also causes a slight regression in the location of
double delete warnings; the double delete is detected at the destructor
call, which is implicit, and so is reported on the first access within the
destructor instead of at the 'delete' statement. This will be fixed soon.

Patch by Karthik Bhat!

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

11 years agoProduce an error if a -cc1 only option is passed to the driver.
Rafael Espindola [Wed, 25 Sep 2013 15:54:41 +0000 (15:54 +0000)]
Produce an error if a -cc1 only option is passed to the driver.

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

11 years agoUse -Xclang to pass -internal-isystem and -internal-externc-isystem to -cc1.
Rafael Espindola [Wed, 25 Sep 2013 15:47:05 +0000 (15:47 +0000)]
Use -Xclang to pass -internal-isystem and -internal-externc-isystem to -cc1.

They are cc1 options only, so the driver was ignoring them.

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

11 years agoMove --relocatable-pch to Options.td.
Rafael Espindola [Wed, 25 Sep 2013 15:26:06 +0000 (15:26 +0000)]
Move --relocatable-pch to Options.td.

It is a valid driver option (we have tests for that), so it should not be
marked as NoDriverOption.

No functionality change other than it showing in --help.

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

11 years agoDon't pass -print-stats to the driver, it is a -cc1 option only.
Rafael Espindola [Wed, 25 Sep 2013 15:21:56 +0000 (15:21 +0000)]
Don't pass -print-stats to the driver, it is a -cc1 option only.

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

11 years agoclang-format: Option to removing the space before assignment operators.
Daniel Jasper [Wed, 25 Sep 2013 15:15:02 +0000 (15:15 +0000)]
clang-format: Option to removing the space before assignment operators.

Patch contributed by Aaron Wishnick. Thank you!

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

11 years agoRemove unused option.
Rafael Espindola [Wed, 25 Sep 2013 14:31:29 +0000 (14:31 +0000)]
Remove unused option.

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

11 years agoSema: Simplify code a bit, plug a potential leak.
Benjamin Kramer [Wed, 25 Sep 2013 13:10:11 +0000 (13:10 +0000)]
Sema: Simplify code a bit, plug a potential leak.

No intended functionality change.

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

11 years agoStaticAnalyzer/Core/RegionStore.cpp: Prune one last "\param IsConst", as fixup to...
NAKAMURA Takumi [Wed, 25 Sep 2013 08:17:20 +0000 (08:17 +0000)]
StaticAnalyzer/Core/RegionStore.cpp: Prune one last "\param IsConst", as fixup to r191342. [-Wdocumentation]

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

11 years agoRefactor to use C++1y 'auto' semantics directly in lambdas with no specified
Richard Smith [Wed, 25 Sep 2013 05:02:54 +0000 (05:02 +0000)]
Refactor to use C++1y 'auto' semantics directly in lambdas with no specified
return type in C++1y mode. No functionality change intended. Extracted and
tweaked from a patch by Faisal Vali!

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

11 years agoObjectiveC migrator. Don't suggest @property for
Fariborz Jahanian [Wed, 25 Sep 2013 00:17:07 +0000 (00:17 +0000)]
ObjectiveC migrator. Don't suggest @property for
methods which look like getters but belong to
known family of methods. // rdar://15044058

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

11 years ago[libclang] python: fix return type of clang_Type_getSizeOf().
Argyrios Kyrtzidis [Wed, 25 Sep 2013 00:14:43 +0000 (00:14 +0000)]
[libclang] python: fix return type of clang_Type_getSizeOf().

Patch by Loïc Jaquemet!

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

11 years ago[libclang] Provide location for attributes and expose 'packed' attribute.
Argyrios Kyrtzidis [Wed, 25 Sep 2013 00:14:38 +0000 (00:14 +0000)]
[libclang] Provide location for attributes and expose 'packed' attribute.

Patch by Loïc Jaquemet!

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

11 years ago[analyzer] This patch removes passing around of const-invalidation vs regular-invalid...
Anton Yartsev [Tue, 24 Sep 2013 23:47:29 +0000 (23:47 +0000)]
[analyzer] This patch removes passing around of const-invalidation vs regular-invalidation info by passing around a datastructure that maps regions and symbols to the type of invalidation they experience. This simplifies the code and would allow to associate more different invalidation types in the future.
With this patch things like preserving contents of regions (either hi- or low-level ones) or processing of the only top-level region can be implemented easily without passing around extra parameters.

This patch is a first step towards adequate modeling of memcpy() by the CStringChecker checker and towards eliminating of majority of false-positives produced by the NewDeleteLeaks checker.

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

11 years agoAllow dynamic_cast to void* even with -fno-rtti.
Eli Friedman [Tue, 24 Sep 2013 23:21:41 +0000 (23:21 +0000)]
Allow dynamic_cast to void* even with -fno-rtti.

PR17346.

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

11 years agoFix -Wmissing-variable-declarations regression.
Eli Friedman [Tue, 24 Sep 2013 23:10:08 +0000 (23:10 +0000)]
Fix -Wmissing-variable-declarations regression.

This issue was introduced in r181677.

PR17349.

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

11 years agoAvoid a signed/unsigned comparison warning with compilers that don't know how
Richard Smith [Tue, 24 Sep 2013 22:13:21 +0000 (22:13 +0000)]
Avoid a signed/unsigned comparison warning with compilers that don't know how
to handle constant expressions.

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

11 years agoObjectiveC migrator: provide space between the property
Fariborz Jahanian [Tue, 24 Sep 2013 21:27:58 +0000 (21:27 +0000)]
ObjectiveC migrator: provide space between the property
keyword and the rest on suggested property. // rdar://15069044

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

11 years agoObjectiveC migrator: Another test for my last patch.
Fariborz Jahanian [Tue, 24 Sep 2013 20:31:24 +0000 (20:31 +0000)]
ObjectiveC migrator: Another test for my last patch.
// rdar://15044991

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

11 years agoObjectiveC migrator: iDOn't mangle names when
Fariborz Jahanian [Tue, 24 Sep 2013 20:20:52 +0000 (20:20 +0000)]
ObjectiveC migrator: iDOn't mangle names when
NS_RETURNS_INNER_POINTER annotation is suggested on
a property. // rdar://15044991

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

11 years agoProduce an error for unknown -m options.
Rafael Espindola [Tue, 24 Sep 2013 19:35:01 +0000 (19:35 +0000)]
Produce an error for unknown -m options.

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

11 years agoAdding -mtbm and -mno-tbm command line options to the clang front end for the
Yunzhong Gao [Tue, 24 Sep 2013 19:00:58 +0000 (19:00 +0000)]
Adding -mtbm and -mno-tbm command line options to the clang front end for the
x86 TBM instruction set. Also adding a __TBM__ macro if the TBM feature is
enabled. Otherwise there should be no functionality change to existing features.

Phabricator code review is located here: http://llvm-reviews.chandlerc.com/D1693

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

11 years agoclang-cl: fix passing optimization level to cl.exe in /fallback mode
Hans Wennborg [Tue, 24 Sep 2013 18:17:21 +0000 (18:17 +0000)]
clang-cl: fix passing optimization level to cl.exe in /fallback mode

We were previously mostly passing it through, but -O0 and -O3 are not valid
options to cl.exe.

We should translate -O0 to /Od and -O3 to /Ox. -O{1,2,s} get passed through.

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

11 years agoclang-cl: pass /nologo when falling back to cl.exe
Hans Wennborg [Tue, 24 Sep 2013 17:36:21 +0000 (17:36 +0000)]
clang-cl: pass /nologo when falling back to cl.exe

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

11 years agoRevert my patch in r191155 to allow forward
Fariborz Jahanian [Tue, 24 Sep 2013 17:03:07 +0000 (17:03 +0000)]
Revert my patch in r191155 to allow forward
class/protocol decls in @implementation and
fixup modern rewriter to handle that.
// rdar://15066233

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

11 years agoUse a valid option (-msse) for testing QA_OVERRIDE_GCC3_OPTIONS.
Rafael Espindola [Tue, 24 Sep 2013 13:37:21 +0000 (13:37 +0000)]
Use a valid option (-msse) for testing QA_OVERRIDE_GCC3_OPTIONS.

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