aboutsummaryrefslogtreecommitdiff
path: root/lib/Sema
AgeCommit message (Collapse)Author
2009-10-27Implement Chris's suggestions for the precendence warnings. Reformat the ↵Sebastian Redl
code a bit. Test the fixits. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85231 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-27Only set the point of instantiation for an implicit or explicitDouglas Gregor
instantiation once we have committed to performing the instantiation. As part of this, make our makeshift template-instantiation location information suck slightly less. Fixes PR5264. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85209 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-27Almost missed this one... Doc update for last change.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85196 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-27Refine noreturn handling. Fixes -Wmissing-noreturn so that it doesn'tMike Stump
complain that functions that have a return statement should be declared noreturn. Fixed PR5286. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85195 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-27Use a pred_iterator instead of a succ_iterator (wrong typedef).Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85193 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-26Add 'fixit' hint on mis-use of pointer-to-memberFariborz Jahanian
binary operators. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85153 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-26Add fixit hint to bitwise precedence warning.Sebastian Redl
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85129 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-26Implement a warning for mixing bitwise logical with comparison ops. Fixes ↵Sebastian Redl
PR5297. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85117 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-25Fix PR5298 - -Wmissing-noreturn shouldn't warn if the function is alreadyChris Lattner
declared noreturn. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85075 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-25Implement rdar://6756623 - use of deprecated type in deprecated typedef ↵Chris Lattner
should not warn git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85073 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-25Make sure we actually have a definition before asking if it is implicit. ↵Sebastian Redl
Fixes PR4674. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85072 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-25When parsing a top level struct declaration, make sure to Chris Lattner
process decl attributes instead of dropping them on the floor. This allows us to diagnose cases like the testcase. Also don't diagnose deprecated stuff in ActOnTag: not all uses of tags may be 'uses', and SemaType does this now. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85071 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-25move calls to DiagnoseUseOfDecl (which warns about deprecated/unavailable Chris Lattner
types) out of Sema::getTypeName into ConvertDeclSpecToType. getTypeName is sometimes used as a predicate in the parser, so it could cause redundant diags to be emitted. This is also needed by two upcoming enhancements. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85070 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-25Remove the Skip parameter from GetTypeForDeclarator and dependents. Take the ↵Sebastian Redl
opportunity to improve an error message and fix PR4498. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85068 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-25remove a nonsensical todoChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85067 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-25move the extwarn about using long long out of the entry ofChris Lattner
GetTypeForDeclarator and into the code that handles long long already. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85063 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-25simplify interface to ConvertDeclSpecToType, check for inferredChris Lattner
block return types only when a TST isn't specified, not every time through GetTypeForDeclarator. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85062 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-25change ConvertDeclSpecToType to be a static function in SemaType.cppChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85061 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-25change Sema::ActOnFriendTypeDecl to use GetTypeForDeclarator instead Chris Lattner
of ConvertDeclSpecToType, which I'd like to keep private to SemaType.cpp. We do this by cons'ing up a trivial Declarator for the type. John, please review. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85060 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-25various cleanups for SemaType.cppChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85059 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-25minor reorg: check both attributes before decl.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85058 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-25simplify Sema::getTypeName a bit: if control gets out of the switch,Chris Lattner
IIDecl cannot be null. There is no need to check for both C++ mode and presence of CXXRecordDecl. ObjC interfaces can't have ScopeSpecs. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85057 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-25In objc mode, every identifier in a cast expression was using doing aChris Lattner
type looking using getTypeName() and every property access was using NextToken() to do lookahead to see if the identifier is followed by a '.'. Rearrange this code to not need lookahead and only do the type lookup if we have "identifier." in the token stream. Also improve a diagnostic a bit. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85056 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-25Audit the code for places where it is assumed that every base specifier ↵Sebastian Redl
refers to a RecordType. Add assertions or conditions as appropriate. This fixes another crash in the Apache stdlib vector. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85055 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-25Ignore dependent bases in ADL. Fixes PR5271.Sebastian Redl
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85054 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-25Add support for vector shifts, pretty straight forward.Nate Begeman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85033 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-24Preserve type source information in TypedefDecls. Preserve it acrossJohn McCall
template instantiation. Preserve it through PCH. Show it off to the indexer. I'm healthily ignoring the vector type cases because we don't have a sensible TypeLoc implementation for them anyway. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84994 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-24Fix overload resolution when calling a member template or taking theDouglas Gregor
address of a member template when explicit template arguments are provided. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84991 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-23Implement template instantiation for non-type templateDouglas Gregor
parameters. Fixes PR5103. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84979 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-23Store the builtin types as CanQualTypes. Expand a bit on the CanQual API,John McCall
but also remove some methods that cause ambiguities, and generally make CanQual<blah> more analogous to QualType. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84976 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-23Migrate Sema::ActOnCallExpr to Sema::FixOverloadedFunctionReference,Douglas Gregor
so that we maintain better source information after template argument deduction and overloading resolves down to a specific declaration. Found and dealt with a few more cases that FixOverloadedFunctionReference didn't cope with. (Finally) added a test case that puts together this change with the DeclRefExpr change to (optionally) include nested-name-specifiers and explicit template argument lists. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84974 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-23Remove OriginalTypeParmDecl; the original type is the one specifiedJohn McCall
in the DeclaratorInfo, if one is present. Preserve source information through template instantiation. This is made more complicated by the possibility that ParmVarDecls don't have DIs, which is possibly worth fixing in the future. Also preserve source information for function parameters in ObjC method declarations. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84971 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-23Diagnose misuse of '.*' and '->*' operators during parseFariborz Jahanian
instead of crashing in code gen. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84968 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-23Apply the special enum restrictions from [over.match.oper]p3b2 in ↵Sebastian Redl
argument-dependent lookup too. This fixes PR5244. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84963 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-23Eliminate QualifiedDeclRefExpr, which captured the notion of aDouglas Gregor
qualified reference to a declaration that is not a non-static data member or non-static member function, e.g., namespace N { int i; } int j = N::i; Instead, extend DeclRefExpr to optionally store the qualifier. Most clients won't see or care about the difference (since QualifierDeclRefExpr inherited DeclRefExpr). However, this reduces the number of top-level expression types that clients need to cope with, brings the implementation of DeclRefExpr into line with MemberExpr, and simplifies and unifies our handling of declaration references. Extended DeclRefExpr to (optionally) store explicitly-specified template arguments. This occurs when naming a declaration via a template-id (which will be stored in a TemplateIdRefExpr) that, following template argument deduction and (possibly) overload resolution, is replaced with a DeclRefExpr that refers to a template specialization but maintains the template arguments as written. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84962 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-23Fixed a code gen bug (by fixing the AST) involving user-definedFariborz Jahanian
pointer-to-member type conversion follwed by a pointer-to-member standard conversion. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84955 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-23Rebuild dependently-sized ext vectors if either the element type or the sizeJohn McCall
changed under the transform. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84953 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-23Silence GCC 4.3 warning.Benjamin Kramer
TreeTransform.h:2333: warning: suggest parentheses around && within || git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84949 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-22Preserve type source information when substituting into FieldDecls.John McCall
Just r84734 now that some fundamental work has been completed. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84914 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-22Preserve source information for anonymous struct/union declarations.John McCall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84913 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-22When building types from declarators, instead of building two types (one forJohn McCall
the DeclaratorInfo, one for semantic analysis), just build a single type whose canonical type will reflect the semantic analysis (assuming the type is well-formed, of course). To make that work, make a few changes to the type system: * allow the nominal pointee type of a reference type to be a (possibly sugared) reference type. Also, preserve the original spelling of the reference type. Both of these can be ignored on canonical reference types. * Remove ObjCProtocolListType and preserve the associated source information on the various ObjC TypeLocs. Preserve the spelling of protocol lists except in the canonical form. * Preserve some level of source type structure on parameter types, but canonicalize on the canonical function type. This is still a WIP. Drops code size, makes strides towards accurate source location representation, slight (~1.7%) progression on Cocoa.h because of complexity drop. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84907 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-22Canonicality is a property of qualified types, not unqualified types.John McCall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84891 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-22When replacing a template-id expression with a declaration reference ↵Douglas Gregor
expression after overloading completes, make sure to keep the qualifier. Still not ready with that test-case... git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84880 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-22When building and instantiating a template-id reference expression, such asDouglas Gregor
N::f<int> keep track of the full nested-name-specifier. This is mainly QoI and relatively hard to test; will try to come up with a printing-based test once we also retain the explicit template arguments past overload resolution. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84869 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-22Try to instantiate templates before doing hierarchy checks in static_cast. ↵Sebastian Redl
Fixes PR5261. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84860 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-22When a template-id expression refers to a member function template, turn it ↵Douglas Gregor
into an (implicit) member access expression. Fixes PR5220 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84848 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-22Refactor our handling of implicit member reference expressions to get most ↵Douglas Gregor
of the logic out of BuildDeclarationNameExpr git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84847 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-21Don't (directly) call RequireCompleteType with an invalid source location.Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84793 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-21Don't generate pointer types for void or base classes when findingDouglas Gregor
conversion types for builtin overloaded operator candidates; I misread this section in the standard the first time around. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84788 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-21Change FixOverloadedFunctionReference to return a (possibly new) expression. ↵Anders Carlsson
Substitute TemplateIdRefExprs with DeclRefExprs. Doug, plz review :) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84763 91177308-0d34-0410-b5e6-96231b3b80d8