Commit Graph

10015 Commits

Author SHA1 Message Date
Jean-Daniel Dupas 8df014e2b1 Improve idiomatic-parentheses by checking method family instead of relying on the selector name.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186524 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-17 18:17:14 +00:00
NAKAMURA Takumi fd527a4e1a SemaDeclCXX.cpp: Dissolve a ligature "fi" in comment.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186523 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-17 17:57:52 +00:00
Enea Zaffanella d4de59d3e5 Fixed source range of C++03 access declarations.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186522 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-17 17:28:56 +00:00
Fariborz Jahanian 80f8aca7ae More code conformance.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186474 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-17 00:05:08 +00:00
Eli Friedman 21cde050b6 Make Expr::isConstantInitializer match IRGen.
Sema needs to be able to accurately determine what will be
emitted as a constant initializer and what will not, so
we get accurate errors in C and accurate -Wglobal-constructors
warnings in C++.  This makes Expr::isConstantInitializer match
CGExprConstant as closely as possible.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186464 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-16 22:40:53 +00:00
Fariborz Jahanian a3c6246950 This patch removes unused parameter allProperties and converts remaining
parameters in ArrayRef'ize Sema::ActOnAtEnd  to ArrayRef.
Patch by Robert Wilhelm.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186421 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-16 15:33:19 +00:00
Tim Northover 09df2b0662 ARM: implement low-level intrinsics for the atomic exclusive operations.
This adds three overloaded intrinsics to Clang:
    T __builtin_arm_ldrex(const volatile T *addr)
    int __builtin_arm_strex(T val, volatile T *addr)
    void __builtin_arm_clrex()

The intent is that these do what users would expect when given most sensible
types. Currently, "sensible" translates to ints, floats and pointers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186394 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-16 09:47:53 +00:00
Eli Friedman 9ec4099a09 Merge attributes on typedef decls.
Not completely sure this is right, but it's clearly better than what
we did before this commit (effectively dropping the attribute).

<rdar://problem/14413117>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186373 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-16 02:07:49 +00:00
Eli Friedman bf03b375d8 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.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186367 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-16 00:01:31 +00:00
Kaelyn Uhrain d4224347be 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.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186342 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-15 19:54:54 +00:00
Chandler Carruth 52c2575fc7 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.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186331 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-15 17:27:42 +00:00
Craig Topper 3aa29df37b Add 'static' and 'const' qualifiers to some arrays of strings.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186314 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-15 08:24:27 +00:00
Serge Pavlov dc49d523db 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


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186306 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-15 06:14:07 +00:00
Craig Topper b960232518 Use llvm::array_lengthof to replace sizeof(array)/sizeof(array[0]).
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186300 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-15 03:38:40 +00:00
Craig Topper ad5b69da47 Use SmallVectorImpl& instead of SmallVector to avoid repeating small vector size.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186284 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-14 16:47:36 +00:00
Richard Smith ace21ba7ba 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.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186270 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-14 02:01:48 +00:00
David Blaikie 658cd2c287 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.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186262 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-13 21:08:14 +00:00
Richard Smith f9e65a274d 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.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186199 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-12 20:38:49 +00:00
Chandler Carruth 1afa611e36 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.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186185 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-12 18:54:40 +00:00
Eli Friedman fcb5a251e9 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>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186137 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-11 23:55:07 +00:00
Kaelyn Uhrain 45c3ba76e9 Provide a fixit hint for changing '->' to '.' if there is no operator->
defined for a class.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186128 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-11 22:38:30 +00:00
Fariborz Jahanian f5200d6865 Restore warning to its original text when
certain familiy of methods have the wrong type.
// rdar://14408244


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186111 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-11 19:13:34 +00:00
Fariborz Jahanian f92a509d87 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.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186105 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-11 16:48:06 +00:00
Richard Smith 5154dce638 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.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186053 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-11 02:27:57 +00:00
Richard Smith 27ec2d0acc Make CheckAddressOfOperand a member of Sema so it can be reused by
__builtin_addressof.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186052 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-11 02:26:56 +00:00
Richard Smith 433a13d0cd 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.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186040 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-10 22:04:13 +00:00
Kaelyn Uhrain 0daf1f4a0f Offer typo suggestions for 'using' declarations.
Patch courtesy of Luke Zarko <zarko@google.com>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186019 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-10 17:34:22 +00:00
Serge Pavlov 041d10caff Fixed comment of Sema::FindInstantiatedDecl.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185997 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-10 04:59:14 +00:00
Eli Friedman 5e867c8a07 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>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185986 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-10 00:30:46 +00:00
Fariborz Jahanian 38b3bd8bf3 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


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185974 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-09 22:02:20 +00:00
Rafael Espindola 4549d7ffc1 ArrayRef'ize Sema::FinalizeDeclaratorGroup, Sema::BuildDeclaratorGroup and
Sema::ActOnDocumentableDecls.

Patch by Robert Wilhelm.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185931 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-09 12:05:01 +00:00
Eli Friedman 27d4644f4f Fix recovery for missing * in objc property.
<rdar://problem/14354144>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185897 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-09 01:38:07 +00:00
Eli Friedman d739c4ecf7 Fix crash typo-correcting dependent member func.
PR16561.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185887 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-08 23:35:04 +00:00
Kaelyn Uhrain 6c4898b6ff 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.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185881 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-08 23:13:44 +00:00
Kaelyn Uhrain 761695fec3 Make a couple of useful typo correction callbacks more widely available.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185880 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-08 23:13:39 +00:00
Eli Friedman 09bddcf8c0 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.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185857 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-08 20:20:06 +00:00
Craig Topper 70d214f864 Introduce a typedef for the type of NewlyDeducedPacks to avoid repeating the small size of the inner SmallVector.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185789 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-08 04:44:01 +00:00
Craig Topper cb9186e45c Remove 'else' after 'return'
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185787 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-08 04:24:47 +00:00
Craig Topper d82c0910f4 Function argument formatting fixes. No functional change.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185786 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-08 04:16:49 +00:00
Craig Topper 1310aaca22 Function argument formatting fixes.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185785 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-08 04:13:06 +00:00
Craig Topper 163fbf810e Use SmallVectorImpl::reverse_iterator instead of SmallVector to avoid specifying the vector size.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185784 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-08 03:55:09 +00:00
David Majnemer bcd0650c1e 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.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185779 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-07 23:49:50 +00:00
Fariborz Jahanian bdf3d9ad85 Objective-C: Warn when fast enumeration variable isn't used.
// rdar://14182680.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185762 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-06 18:04:13 +00:00
Sylvestre Ledru 4cb3d909cb Remove some useless declarations (found by scan-build)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185752 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-06 08:00:09 +00:00
David Majnemer c371db6b1d 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.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185745 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-06 02:13:46 +00:00
Craig Topper 6b9240e058 Use SmallVectorImpl& for function arguments instead of SmallVector.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185715 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-05 19:34:19 +00:00
Fariborz Jahanian 8540b6e778 Objective-C: diagnose when synthesizing an ivar of
abstract class type. // rdar://14261999


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185710 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-05 17:18:11 +00:00
David Majnemer c77039e1b6 Sema: Call IgnoreParens fewer times in CheckAddressOfOperand
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185684 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-05 06:23:33 +00:00
Craig Topper ee0a47998c Add typedefs for Densemaps containing SmallVectors to avoid repeating the SmallVector size when creating iterators for the DenseMap.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185682 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-05 04:33:53 +00:00
Craig Topper 8bc99dd30c Add a space between closing template '>' to unbreak build.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185611 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-04 03:15:42 +00:00