aboutsummaryrefslogtreecommitdiff
path: root/lib/Sema
AgeCommit message (Collapse)Author
2012-03-15Provide the specific target type in the -Wnull-conversion warning.David Blaikie
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152835 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-15Remove a variable rendered unused by r152750.Richard Smith
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152758 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-14Instantiating a class template should not instantiate the definition of anyRichard Smith
scoped enumeration members. Later uses of an enumeration temploid as a nested name specifier should cause its instantiation. Plus some groundwork for explicit specialization of member enumerations of class templates. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152750 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-14When emitting a diagnostic about two-phase name lookup, don't do uselessNick Lewycky
qualified name lookups into transparent contexts. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152739 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-14Minor cleanup in attribute-related diagnostics, from Alexander Kornienko!Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152725 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-14[Sema] Fix SemaDiagnosticBuilder to be inline.Daniel Dunbar
- As with DiagnosticBuilder, it is very important that SemaDiagnosticBuilder be completely inline to ensure that the compiler can rip it apart and sink it to registers. This is good for another 30k reduction in code size. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152708 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-13Spelling.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152644 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-13Ensure that default arguments are handled correctly in sub scopes. For example:James Molloy
void f () { int g (int a, int b=4); { int g(int a, int b=5); } } should compile. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152621 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-13Implement [temp.param]p5: the top-level cv-qualifiers on a non-type templateRichard Smith
parameter's declaration are ignored when determining the parameter's type. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152619 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-13PR11850 + duplicates: don't assume that a function parameter pack expansion isRichard Smith
at the end of the parameter list. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152618 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-13PR11925: A function can't have a variably-modified return type. Not even in C++.Richard Smith
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152615 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-13It never makes sense to do a lookup into a LinkageSpecDecl, so assert that weNick Lewycky
don't, and clean up the places that do it. The change to ASTWriter is surprising, but the deleted code is a no-op as of r152608. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152609 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-13Fix PR10447: lazily building name lookup tables for DeclContexts was broken.Richard Smith
The deferred lookup table building step couldn't accurately tell which Decls should be included in the lookup table, and consequently built different tables in some cases. Fix this by removing lazy building of DeclContext name lookup tables. In practice, the laziness was frequently not worthwhile in C++, because we performed lookup into most DeclContexts. In C, it had a bit more value, since there is no qualified lookup. In the place of lazy lookup table building, we simply don't build lookup tables for function DeclContexts at all. Such name lookup tables are not useful, since they don't capture the scoping information required to correctly perform name lookup in a function scope. The resulting performance delta is within the noise on my testing, but appears to be a very slight win for C++ and a very slight loss for C. The C performance can probably be recovered (if it is a measurable problem) by avoiding building the lookup table for the translation unit. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152608 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-13[Sema] Prefer to use ObjCInterfaceDecl's protocol_begin()/protocol_end() ↵Argyrios Kyrtzidis
iterators instead of ObjCInterfaceDecl::getReferencedProtocols(), because the iterators are safe to use even if the caller did not check that the interface is a definition. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152597 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-13Fix crash at @implementation with a forward reference as base class.Argyrios Kyrtzidis
rdar://11020003 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152596 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-13Alternate fix to PR12248: put Sema in charge of special-casingJohn McCall
the diagnostic for assigning to a copied block capture. This has the pleasant side-effect of letting us special-case the diagnostic for assigning to a copied lambda capture as well, without introducing a new non-modifiable enumerator for it. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152593 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-12C++11 [temp.deduct.call]p6 tweak: when given a set of overlaodedDouglas Gregor
functions that includes an explicit template argument list, perform an inner deduction against each of the function templates in that list and, if successful, use the result of that deduction for the outer template argument deduction. Fixes PR11713. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152575 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-12[Sema] -Add an invalid objc category to the DeclContext so that it can beArgyrios Kyrtzidis
serialized -Don't add methods of invalid objc containers to the global method pool. This protects us from trying to serialize a method whose container was not serialized. Part of rdar://11007039. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152566 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-12ObjCBoolLiterals (__objc_yes/__objc_no) behave like C++ booleans ↵Jordy Rose
(true/false). They are NOT objects. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152564 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-12Fix parsing of trailing-return-type. Types are syntactically prohibited fromRichard Smith
being defined here: [] () -> struct S {} does not define struct S. In passing, implement DR1318 (syntactic disambiguation of 'final'). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152551 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-11Unify naming of LangOptions variable/get function across the Clang stack ↵David Blaikie
(Lex to AST). The member variable is always "LangOpts" and the member function is always "getLangOpts". Reviewed by Chris Lattner git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152536 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-11When template argument deduction is ignoring qualifiers, perform deepDouglas Gregor
structural comparison of non-dependent types. Otherwise, we end up rejecting cases where the non-dependent types don't match due to qualifiers in, e.g., a pointee type. Fixes PR12132. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152529 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-10When determining whether an identifier followed by a '<' in a memberDouglas Gregor
access expression is the start of a template-id, ignore function templates found in the context of the entire postfix-expression. Fixes PR11856. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152520 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-10Fix crash & accepts-invalid for array of arrays of user defined type.David Blaikie
Test case/other help by Richard Smith. Code review by John McCall. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152519 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-10PR12225: The requirement that literal operators be namespace-scope functionsRichard Smith
does not imply that such functions can't be declared at block scope. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152509 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-10Remove BlockDeclRefExpr and introduce a bit on DeclRefExpr toJohn McCall
track whether the referenced declaration comes from an enclosing local context. I'm amenable to suggestions about the exact meaning of this bit. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152491 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-10Slightly tweak this condition. "isTransparentContext()" was checking whether anNick Lewycky
enum is scoped or not, which is not relevant here. Instead, phrase the loop in the same terms that the standard uses, instead of this awkward set of conditions that is *nearly* equal. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152489 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-10Could not find this in C99. Perhaps this rule comes from a DR, but in any caseNick Lewycky
please annotate it with a note explaining why this wrong-seeming behaviour is correct. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152488 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-10Only make a call to a copy constructor elidable if in fact we areDouglas Gregor
doing a copy. Fixes PR12139. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152485 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-10[Sema] A tag decl that is marked as invalid and is used in a decl-spec,Argyrios Kyrtzidis
should not impede creating a proper TypeLoc info for the decl-spec. This improves our semantic error recovery. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152481 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-10Qualifiers on a canonical array type go on the outermost type, not theDouglas Gregor
innermost type. Fixes PR12142. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152456 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-09[Sema] Fix a diag change to include a range that appeared intended, but neverDaniel Dunbar
actually happened. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152442 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-09Improve our semantic error recovery.Argyrios Kyrtzidis
When an error made a record member invalid, the record would stay as "isBeingDefined" and not "completeDefinition". Even easily recoverable errors ended up propagating records in such "beingDefined" state, for example: struct A { ~A() const; // expected-error {{'const' qualifier is not allowed on a destructor}} }; struct B : A {}; // A & B would stay as "not complete definition" and "being defined". This weird state was impending lookups in the records and hitting assertion in the ASTWriter. Part of rdar://11007039 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152432 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-09[Sema] Remove dead getSourceRange() call, caught by Clang after markingDaniel Dunbar
LLVM_READONLY. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152428 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-09lldb support: under debugger support flag, when sending messageFariborz Jahanian
to forward class, and assigning to an 'id' type var, message sends default to 'id'. // rdar"//10988847 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152420 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-09[AST/Sema/libclang] Replace getSourceRange().getBegin() with getLocStart().Daniel Dunbar
- getSourceRange().getBegin() is about as awesome a pattern as .copy().size(). I already killed the hot paths so this doesn't seem to impact performance on my tests-of-the-day, but it is a much more sensible (and shorter) pattern. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152419 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-09-Wformat-non-iso: warn about positional arguments (pr12017)Hans Wennborg
This renames the -Wformat-non-standard flag to -Wformat-non-iso, rewords the current warnings a bit (pointing out that a format string is not supported by ISO C rather than being "non standard"), and adds a warning about positional arguments. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152403 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-09Literal operators can't have default arguments.Richard Smith
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152394 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-09Support for raw and template forms of numeric user-defined literals,Richard Smith
and lots of tidying up. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152392 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-09Perform l2r conversions on delete operands before doingJohn McCall
type-analysis; otherwise, we just completely do the wrong thing for placeholders. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152375 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-09[AST] Reduce Decl::getASTContext() calls.Daniel Dunbar
- This function is not at all free; pass it around along some hot paths instead of recomputing it deep inside various VarDecl methods. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152363 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-08Don't crash when a statement in a block is ill-formed butJohn McCall
introduces cleanups anyway. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152345 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-08Turn explicit construction of temporaries using initializer list syntax into ↵Sebastian Redl
CXXTemporaryObjectExprs, not just CXXConstructExprs, which have a worrying tendency to vanish. Fixes PR12167. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152340 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-08Replace MarkVarRequired with a more genericRafael Espindola
HandleCXXStaticMemberVarInstantiation. Suggested by Argyrios. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152320 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-08Add support for cooked forms of user-defined-integer-literal andRichard Smith
user-defined-floating-literal. Support for raw forms of these literals to follow. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152302 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-08Implement C++11 [lex.ext]p10 for string and character literals: a ud-suffix notRichard Smith
starting with an underscore is ill-formed. Since this rule rejects programs that were using <inttypes.h>'s macros, recover from this error by treating the ud-suffix as a separate preprocessing-token, with a DefaultError ExtWarn. The approach of treating such cases as two tokens is under discussion for standardization, but is in any case a conforming extension and allows existing codebases to keep building while the committee makes up its mind. Reword the warning on the definition of literal operators not starting with underscores (which are, strangely, legal) to more explicitly state that such operators can't be called by literals. Remove the special-case diagnostic for hexfloats, since it was both triggering in the wrong cases and incorrect. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152287 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-08Sema: Don't emit a gajillion calls to sanity() -- an empty function -- in NDEBUGDaniel Dunbar
builds. Sheesh. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152279 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-08User-defined literal support for character literals.Richard Smith
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152277 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-08Fix -Wuninitialized to catch the case of a class being initialized with a callRichard Trieu
to its own member function. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152276 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-08improve on diagnostic and provide a fixit hint whenFariborz Jahanian
an uninitialized block variable is being called inside the block literal. // rdar://10817031 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152271 91177308-0d34-0410-b5e6-96231b3b80d8