aboutsummaryrefslogtreecommitdiff
path: root/lib/Sema
AgeCommit message (Collapse)Author
2011-10-26Compute the promoted integer type of fixed-width enums correctly. Found by ↵Eli Friedman
inspection. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143021 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-26Fix crash due to missing array-to-pointer decay when instantiating an unresolvedRichard Smith
member expression. Refactoring to follow. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143017 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-26UnresolvedMemberExprs need lvalue-to-rvalue conversions during templateRichard Smith
instantiations too. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143016 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-25Restore r142914 and r142915, now with missing file and apparentJohn McCall
GCC compiler workaround. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142931 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-25Revert r142914 and r142915, due to possibly missing file.NAKAMURA Takumi
r142914: "Introduce a placeholder type for "pseudo object"" r142915: "Pull the pseudo-object stuff into its own file." git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142921 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-25Pull the pseudo-object stuff into its own file.John McCall
Tidy up some marginally related code just to annoy single-purpose-commit lovers. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142915 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-25Introduce a placeholder type for "pseudo object"John McCall
expressions: expressions which refer to a logical rather than a physical l-value, where the logical object is actually accessed via custom getter/setter code. A subsequent patch will generalize the AST for these so that arbitrary "implementing" sub-expressions can be provided. Right now the only client is ObjC properties, but this should be generalizable to similar language features, e.g. Managed C++'s __property methods. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142914 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-25Don't forget the lvalue-to-rvalue conversion on the LHS when instantiating aRichard Smith
dependent ->, where the member being referred to is an anonymous struct or union. This path was missed by the fix in r142890. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142910 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-25Check for unexpanded parameter packs in the name that guards aDouglas Gregor
Microsoft __if_exists/__if_not_exists statement. Also note that we weren't traversing DeclarationNameInfo *at all* within the RecursiveASTVisitor, which would be rather fatal for variadic templates. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142906 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-25Implement support for dependent Microsoft __if_exists/__if_not_existsDouglas Gregor
statements. As noted in the documentation for the AST node, the semantics of __if_exists/__if_not_exists are somewhat different from the way Visual C++ implements them, because our parsed-template representation can't accommodate VC++ semantics without serious contortions. Hopefully this implementation is "good enough". git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142901 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-25Don't forget the lvalue-to-rvalue conversion on the LHS of an -> when rebuildingRichard Smith
it during template instantiation, for a known RHS decl. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142890 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-24Rework Microsoft __if_exists/__if_not_exists parsing and semanticDouglas Gregor
analysis to separate dependent names from non-dependent names. For dependent names, we'll behave differently from Visual C++: - For __if_exists/__if_not_exists at class scope, we'll just warn and then ignore them. - For __if_exists/__if_not_exists in statements, we'll treat the inner statement as a compound statement, which we only instantiate in templates where the dependent name (after instantiation) exists. This behavior is different from VC++, but it's as close as we can get without encroaching ridiculousness. The latter part (dependent statements) is not yet implemented. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142864 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-24When we perform a lookup for a dependent name that is a member of anDouglas Gregor
unknown specialization, treat this the same way as if the name were not found in the current instantiation. No actual functionality change, since apparently nothing depends on this. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142862 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-24Minor refactoring of my last patch. Per Doug's suggestion.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142807 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-24Rename AnalysisContext to AnalysisDeclContext. Not only is this name more ↵Ted Kremenek
accurate, but it frees up the name AnalysisContext for other uses. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142782 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-23Fix grammar for C++11 alignment specifiers, and add a few FIXMEs.Peter Collingbourne
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142760 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-23Diagnose unexpanded parameter packs in member initialisers (includingPeter Collingbourne
in-class member initialisers). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142758 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-23Clean up duplicated code in Sema::BuildMemInitializer.Peter Collingbourne
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142757 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-23Improve unexpanded parameter pack diagnostics by using UPPC_Initializer here.Peter Collingbourne
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142756 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-23Attach class template attributes to the templated CXXRecordDecl,Peter Collingbourne
instead of silently discarding them. As a side effect, this improves diagnostics for constexpr class templates slightly. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142755 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-23[analyzer] Remove LocationContext creation methods from AnalysisManager, and ↵Ted Kremenek
change clients to use AnalysisContext instead. WIP to remove/reduce ExprEngine's usage of AnalysisManager. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142739 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-22Only emit implicit constant conversion truncation warnings in reachable ↵Ted Kremenek
code. Apparently this is what GCC does, and some code depends on this. Fixes <rdar://problem/10321089>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142716 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-22Fixes a minor hick up to my last patch.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142711 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-22objc: private methods can have their attributes, no diagnostic is required.Fariborz Jahanian
None private methods if their implementation have attribute, they must exactly match those in their declarations. // rdar://10271563 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142709 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-21Don't try to set the "array filler" in a InitListExpr twice.Argyrios Kyrtzidis
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142695 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-21c++: support gcc's application of weak attribute onFariborz Jahanian
class declaration which forces any such class and any class that inherits from such a class to have their typeinfo symbols be marked as weak. // rdar://10246395 A test/CodeGenCXX/weak-extern-typeinfo.cpp M lib/Sema/SemaDeclCXX.cpp M lib/Sema/SemaDeclAttr.cpp M lib/CodeGen/CGRTTI.cpp git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142693 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-21Thread safety analysis refactoring: invalid lock expressions.DeLesley Hutchins
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142666 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-21objective-c: Diagnose redeclaration of privateFariborz Jahanian
ivars in class extensions. // rdar://10309454 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142664 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-21When performing name lookup for the previous declaration of a field,Douglas Gregor
be sure to consider all of the possible lookup results. We were assert()'ing (but behaving correctly) for unresolved values. Fixes PR11134 / <rdar://problem/10290422>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142652 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-21Permit auto SCS on parameter declarations, C++03 [dcl.stc]p2Peter Collingbourne
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142649 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-20Add -Wc++98-compat diagnostics for jumps which bypass initialization of non-PODRichard Smith
but trivially constructible and destructible variables in C++11 mode. Also incidentally improve the precision of the wording for jump diagnostics in C++98 mode. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142619 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-20When fixing up the storage class for an anonymous union, don't markDouglas Gregor
the anonymous union as valid: our fixes have Fix-Its. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142616 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-20There's no point in marking a declaration invalid just because itDouglas Gregor
shadows a template parameter. Complain about the shadowing (or not, under -fms-extensions), but don't invalidate the declaration. Merely forget about the template parameter declaration. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142596 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-20Diagnose class template (partial) specializations that occur in theDouglas Gregor
*wrong* class scope. This is one of the problems behind <rdar://problem/9676205>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142588 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-20When we parse something that looks like a templated friend tag butDouglas Gregor
actually just has an extraneous 'template<>' header, strip off the 'template<>' header and treat it as a normal friend tag. Fixes PR10660 / <rdar://problem/9958322>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142587 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-20Add -Wc++98-compat warning for enumerations in nested name specifiers.Richard Smith
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142568 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-20FixIt insert 'static' for anonymous unions at global or namespace scope.David Blaikie
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142566 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-20Add a fixit to remove storage specifiers on anonymous enums.David Blaikie
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142565 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-1980 cols (one I created in my last commit, plus a bunch of others that were ↵David Blaikie
already there) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142552 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-19Don't provide errors for anonymous unions when they're actually anonymous ↵David Blaikie
classes. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142551 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-19-Wc++98-compat: warn on nontrivial types used in unions and anonymous structs.Richard Smith
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142541 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-19Only warn at self-initialization if some later use is always uninitialized.Matt Beaumont-Gay
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142538 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-19-Wc++98-compat: diagnose if a reference is bound to a prvalue which does notRichard Smith
have an unambiguous accessible copying constructor; this is ill-formed in C++98. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142533 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-19Improve the warning for cv-qualifiers on free functions, from Ahmed Charles!Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142478 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-19Fix pr9789, assert-on-invalid while instantiating an (invalid) class ↵David Blaikie
template with a non-final parameter pack. Also improve the warning for non-final parameter packs in this scenario so it only fires once, rather than once for every template parameter after the non-final parameter pack. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142473 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-19Don't forget to complete the objc interface before asking for information,Argyrios Kyrtzidis
otherwise lldb will suffer. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142471 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-19Add a -Wc++98-compat warning for friend functions of class templates which wouldRichard Smith
be implicitly instantiated (resulting in a redefinition) in C++98. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142468 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-19Move static array parameter checks to SemaExpr, per Doug's requestPeter Collingbourne
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142465 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-19-Wc++98-compat: warn if a SFINAE substitution in C++11 suppresses an accessRichard Smith
control diagnostic. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142463 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-18-Wc++98-compat and -Wc++98-compat-pedantic warnings for Sema, part 2.Richard Smith
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142426 91177308-0d34-0410-b5e6-96231b3b80d8