aboutsummaryrefslogtreecommitdiff
path: root/lib/Sema
AgeCommit message (Collapse)Author
2009-11-09Remove a useless variable that got left behind.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86501 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-09Unify the codepaths used to verify base and member initializers for explicitlyEli Friedman
and implicitly defined constructors. This has a number of benefits: 1. Less code. 2. Explicit and implicit constructors get the same diagnostics. 3. The AST explicitly contains constructor calls from implicit default constructors. This allows handing some cases that previously weren't handled correctly in IRGen without any additional code. Specifically, implicit default constructors containing calls to constructors with default arguments are now handled correctly. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86500 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-08Fix use-after-free bug.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86485 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-08Special-case default argument expression in instantiation. This should fix ↵Sebastian Redl
PR4301. Doug, please double-check my assumptions. Read the PR for more details. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86465 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-08When checking the namespace of a redeclaration or definition, look through ↵Sebastian Redl
linkage specs. Fixes PR5430. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86461 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-08Don't reprocess non-dependent initializers of non-dependent VarDecls. Fixes ↵Sebastian Redl
PR5426. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86460 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-08Test commit - minor terminology change to my recent patch suggested by John ↵Sean Hunt
McCall git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86442 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-08Always make sure we're using an unqualified type when building aDouglas Gregor
constructor name. Fixes PR5418. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86441 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-07Patch to gives an error that at least points users in the direction of the ↵Fariborz Jahanian
error, rather than an error about incompatible types. Patch by Sean Hunt. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86402 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-07Cope with calls to operator() templates. Fixes PR5419.Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86387 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-07Support -Wshorten-64-to-32 for integer types only, which seems to satisfy theJohn McCall
core requirements. Fixes rdar://problem/6389954 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86364 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-07Improve -Wconversion by permitting binary operations on values of the targetJohn McCall
type (or smaller) to stay "closed" within the type. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86356 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-07Don't treat variables with non-trivial ctors or dtors as unused. Fixes PR5407.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86352 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-07Cleanup, no functionality change.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86351 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-07When instantiating a field decl, make sure to clone its attributes. With ↵Anders Carlsson
this change FileCheck no longer crashes when it's run without any arguments. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86344 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-07Implement -Wconversion. Off by default, in the non-gcc group. There'sJohn McCall
significant work left to be done to reduce the false-positive rate here. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86326 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-07Add basic code completion support for ObjC messages.Steve Naroff
Still a work in progress... git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86323 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-07Make sure isCopyAssignment is only true for actual copy assignment operators,Eli Friedman
instead of all assignment operators. The mistake messes up IRGen because it ends up assuming that the assignment operator is actually the implicit copy assignment operator, and therefore tries to emit the RHS as an lvalue. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86307 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-07Various improvements to Clang's code-completion infrastructure:Douglas Gregor
- Introduce more code-completion string "chunk" kinds that describe symbols, the actual text that the user is expected to type, etc. - Make the generation of macro results optional, since it can be slow - Make code-completion accessible through the C API, marshalling the code-completion results through a temporary file (ick) to maintain process separation. The last doesn't have tests yet. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86306 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-06Since default writable attribute is 'assign', allowFariborz Jahanian
specification of 'assign' (no warning to be issued), when a continuation class makes a 'readonly' attribute 'readwrite' but also specifies the 'assign' attribute. (this matches gcc's behavior and prevents exessive warnings)/ git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86297 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-06Don't warn -Wsign-compare if we're in an unevaluated context, and fixedJohn McCall
a typo pointed out by Fariborz. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86265 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-06compare.c also needs a target triple now, and improve some comments while we'reJohn McCall
at it. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86243 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-06Improve the -Wsign-compare heuristics:John McCall
* If the unsigned type is smaller than the signed type, never warn, because its value will not change when zero-extended to the larger type. * If we're testing for (in)equality, and the unsigned value is an integer constant whose sign bit is not set, never warn, because even though the signed value might change, it can't affect the result of the equality. Also make the comparison test cases much more rigorous, and have them expose the subtle differences between C and C++ here. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86242 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-06Rework the fix-it hint for code likeDouglas Gregor
get_origin->x where get_origin is actually a function and the user has forgotten the parentheses. Instead of giving a lame note for the fix-it, give a full-fledge error, early, then build the call expression to try to recover. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86238 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-06If we have a C-style cast, functional cast, or a static_cast to aDouglas Gregor
class type, don't perform the array-to-pointer or function-to-pointer conversions, because we may end up binding a reference to a function or array. With this change, FileCheck now passes -fsyntax-only! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86211 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-06When we encounter a derived-to-base conversion when performing anDouglas Gregor
implicit conversion sequence, check the validity of this conversion and then perform it. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86210 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-06Minor cleanup of my last patch.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86209 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-06This patch implements Sema for clause 13.3.3.1p4.Fariborz Jahanian
It has to do with vararg constructors used as conversion functions. Code gen needs work. This is WIP. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86207 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-06Make sure that EnumConstantDecls always get a type, even when they have ↵Douglas Gregor
type-dependent initializers. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86197 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-05The signed/unsigned checker should not warn for value-dependent expressions, ↵Sebastian Redl
and should especially not try to evaluate them. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86173 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-05Be a little more careful when trying to extract a TypeDecl from a ↵Douglas Gregor
enum/class/struct/union specifier; in invalid code, we may also see ClassTemplateDecls. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86171 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-05Don't allow definitions of array variables without some size information in ↵Sebastian Redl
C++. Fixed PR5401 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86165 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-05Eliminate some false positives due to a thinko in the "'blah' isDouglas Gregor
always zero in this context" warning logic. Also, make the diagnostic itself more precise when referring to pointer values ("NULL" vs. "zero"). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86143 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-05When collecting types for built-in candidates, make arrays decay to ↵Sebastian Redl
pointers. Otherwise, subscripting an array leads to no candidates at all. Fixes PR5360. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86140 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-05Allow the element type of arrays to be incomplete in C++.Sebastian Redl
This fixes PR5048. Also fix a bug where zero-sized arrays weren't warned about when the size was unsigned. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86136 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-05Fixed two places where we needed to force completion of a typeDouglas Gregor
(without complaining if it fails) to get proper semantics: reference binding with a derived-to-base conversion and the enumeration of constructors for user-defined conversions. There are probably more cases to fix, but my prior attempt at statically ensuring that complete-type checking always happens failed. Perhaps I'll try again. With this change, Clang can parse include/llvm/*.h! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86129 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-05Implement the conditional-operator part of -Wsign-compare. TurnJohn McCall
DiagnoseSignCompare into Sema::CheckSignCompare and call it from more places. Add some enumerator tests. These seem to expose some oddities in the types we're converting C++ enumerators to; in particular, they're converting to unsigned before int, which seems to contradict 4.5 [conv.prom] p2. Note to self: stop baiting Doug in my commit messages. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86128 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-05When instantiating a UnaryOperator, allow the resulting expression toDouglas Gregor
still be dependent or invoke an overloaded operator. Previously, we only supported builtin operators. BinaryOperator/CompoundAssignOperator didn't have this issue because we always built a CXXOperatorCallExpr node, even when name lookup didn't find any functions to save until instantiation time. Now, that code builds a BinaryOperator or CompoundAssignOperator rather than a CXXOperatorCallExpr, to save some space. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86087 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-05Implement -Wsign-compare, or at least the actual comparison part of it.John McCall
Conditional operands are next. Fixes part of rdar://problem/7289584. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86083 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-05Make sure to grab CVR qualifiers from the canonical type. ARGH!Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86079 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-04When instantiating a MemberExpr, be sure to instantiate theDouglas Gregor
explicitly-specified template arguments, too! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86066 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-04Comments, formatting. Based on patch by Brandon Pearcy!John McCall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86065 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-04Diagnose using a field to initialize itself. Patch by Brandon Pearcy!John McCall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86061 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-04When starting a C++ member access expression, make sure to compute theDouglas Gregor
type of the object even when it is dependent. Specifically, this makes sure that we get the right type for "this->", which is important when performing name lookup into this scope to determine whether an identifier or operator-function-id is a template name. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86060 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-04Fix a little canonical-types issue with non-type template arguments.Douglas Gregor
Fixes PR5349. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86052 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-04Don't try to check the initialization of fields with dependentDouglas Gregor
types. Fixes PR5352. Fariborz, please review. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86031 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-04Store the unresolved class type in MemberPointerType's Class field,Douglas Gregor
from Peter Collingbourne! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86030 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-04Switch parsing of using declarations over to ParseUnqualifiedId.Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86027 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-04Preserve type source information in sizeof/alignof expressions, and pass itJohn McCall
through to indexing. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86018 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-04When performing template instantiation (transformation) ofDouglas Gregor
expressions, keep track of whether we are immediately taking the address of the expression. Pass this flag when building a declaration name expression so that we handle pointer-to-member constants properly. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86017 91177308-0d34-0410-b5e6-96231b3b80d8