aboutsummaryrefslogtreecommitdiff
path: root/lib
AgeCommit message (Collapse)Author
2011-01-21Improve the diagnostic that complains about binding an rvalueDouglas Gregor
reference to an lvalue. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123953 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-21More work to bring reference binding up to the latest C++0xDouglas Gregor
specification. In particular, an rvalue reference can bind to an initializer expression that is an lvalue if the referent type and the initializer expression type are not reference-related. This is a newer formulation to the previous "rvalue references can never bind to lvalues" rule. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123952 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-21When performing reference binding via a conversion function, performDouglas Gregor
type checking based on the actual reference type we're trying to bind the result to, rather than stripping the reference. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123950 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-20Initialize a variable, found by Ted.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123948 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-20Fix a use of uninitialized variables, found by Ted!Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123947 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-20Removing debug printing logic from UninitializedValuesV2.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123944 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-20Relax CFG assertions in UninitializedValuesV2 whenTed Kremenek
handling pseudo-path sensitivity, and instead use those assertion conditions as dynamic checks. These assertions would be violated when analyzing a CFG where some branches where optimized away during CFG construction because their branch conditions could be trivially determined. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123943 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-20Add rudimentary path-sensitivity to UnintializedValuesV2Ted Kremenek
analysis for short-circuited operations. For branch written like "if (x && y)", we maintain two sets of dataflow values for the outgoing branches. This suppresses some common false positives for -Wuninitialized-experimental. This change introduces some assertion failures when running on the LLVM codebase. WIP. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123923 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-20apple kext abi requires all vf calls, including qualifiedFariborz Jahanian
vf calls, be made indirect. This patch is towards that goal. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123922 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-20Enhance AnalysisConsumer to also visit functionsTed Kremenek
and methods defined within 'namespace X { ... }'. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123921 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-20Start refactoring reference binding to more closely match the C++0xDouglas Gregor
working paper's structure. The only functional change here is that we now handling binding to array rvalues, which we would previously reject. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123918 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-20Diagnose when a virtual member function marked final is overridden.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123916 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-20Add some tests for reference-collapsing and referencing bindingDouglas Gregor
involving rvalue references, to start scoping out what is and what isn't implemented. In the process, tweak some standards citations, type desugaring, and teach the tentative parser about && in ptr-operator. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123913 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-20Fix the computation of alignment for fields of packed+aligned structs.John McCall
Part of the fix for PR8413. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123904 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-20When instantiating member functions, propagate whether the member function ↵Anders Carlsson
is marked 'final' and 'override'. Also, call CheckOverrideControl when instantiating member functions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123900 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-20When checking for functions marked override, ignore dependent contexts.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123894 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-20Make CheckOverrideControl a member of Sema.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123893 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-20Diagnose virtual member functions marked override but not overriding any ↵Anders Carlsson
virtual member functions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123888 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-20Add IsMarkedOverride and IsMarkedFinal flags to FunctionDecl (to be used by ↵Anders Carlsson
CXXRecordDecl). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123885 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-20Only allow virtual member functions to be marked 'override' and 'final'.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123882 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-20Pass the VirtSpecifiers along to Sema::ActOnCXXMemberDeclarator.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123878 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-20Lazily initialize the 'final' and 'override' contextual keywords as ↵Anders Carlsson
suggested by Doug. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123876 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-20Fix PR8884 by skipping transparent contexts. The test is for LikageSpec. IRafael Espindola
failed to find a case where an enum context would make a difference, but found PR9007 on the way. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123871 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-20Add CharUnits::RoundUpToAlignment() to simplify rounding in character units.Ken Dyck
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123868 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-20When building a user-defined conversion sequence, keep track of theDouglas Gregor
declaration that name lookup actually found, so that we can use it for access checking later on. Fixes <rdar://problem/8876150>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123867 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-20Sema::BuildCXXMemberCallExpr() can fail due to access or ambiguities,Douglas Gregor
so allow it to propagate the failure outward. Fixes the crashing part of <rdar://problem/8876150>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123863 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-19Explicitly track the number of call arguments provided when performingDouglas Gregor
overload resolution, so that we only use that number of call arguments for partial ordering. Fixes PR9006, a recent regression. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123861 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-19Eradicate any mention of C++0x concepts.Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123860 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-19Variadic templates are fully implemented.Douglas Gregor
Turn on the __has_feature switch for variadic templates, document their completion, and put the ExtWarn into the c++0x-extensions warning group. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123854 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-19Downgrade the "variadic templates are a C++0x feature" error to anDouglas Gregor
ExtWarn. We want variadic templates to be usable in libc++/libstdc++ headers even when we're in C++98/03 mode, since it's the only clean way to implement TR1 <functional>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123852 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-19Refactor the dependence computation for DeclRefExpr so that we canDouglas Gregor
reuse it for BlockDeclRefExpr. Do so, fixing the dependence calculate for BlockDeclRefExpr. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123851 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-19Implement basic support for the use of variadic templates and blocksDouglas Gregor
together. In particular: - Handle the use of captured parameter pack names within blocks (BlockDeclRefExpr understands parameter packs now) - Handle the declaration and expansion of parameter packs within a block's parameter list, e.g., ^(Args ...args) { ... }) - Handle instantiation of blocks where the return type was not explicitly specified. (unrelated, but necessary for my tests). Together, these fixes should make blocks and variadic templates work reasonably well together. Note that BlockDeclRefExpr is still broken w.r.t. its computation of type and value dependence, which will still cause problems for blocks in templates. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123849 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-19Implement support for non-type template parameter packs whose type isDouglas Gregor
a pack expansion, e.g., the parameter pack Values in: template<typename ...Types> struct Outer { template<Types ...Values> struct Inner; }; This new implementation approach introduces the notion of an "expanded" non-type template parameter pack, for which we have already expanded the types of the parameter pack (to, say, "int*, float*", for Outer<int*, float*>) but have not yet expanded the values. Aside from creating these expanded non-type template parameter packs, this patch updates template argument checking and non-type template parameter pack instantiation to make use of the appropriate types in the parameter pack. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123845 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-19NonTypeTemplateParmDecls always have TypeSourceInfo. There's no senseDouglas Gregor
in pretending otherwise. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123839 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-19Warn about the use of unparenthesized |= in conditionals (which may beDouglas Gregor
a typo for !=). Fixes PR9001, from Hans Wennborg! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123836 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-19Parse the optional semicolon after a C++ in-class member functionDouglas Gregor
definition, rather than complaining about it. Problem reported by Marshall Clow. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123835 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-19When building the copy expression for a __block variable, make sureJohn McCall
there's a respectable point of instantiation. Also, make sure we do this operation even when instantiating a dependently-typed variable. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123818 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-19Change the canonical representation of array types to store qualifiers on theJohn McCall
outermost array types and not on the element type. Move the CanonicalType member from Type to ExtQualsTypeCommonBase; the canonical type on an ExtQuals node includes the qualifiers on the ExtQuals. Assorted optimizations enabled by this change. getQualifiers(), hasQualifiers(), etc. should all now implicitly look through array types. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123817 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-19Change QualType::getTypePtr() to return a const pointer, then change aJohn McCall
thousand other things which were (generally inadvertantly) relying on that. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123814 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-19Replace calls to getTypeSize() and getTypeAlign() with their 'InChars' Ken Dyck
counterparts where char units are needed. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123805 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-19Emit DW_TAG_lexical_scope to surround foreach.Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123802 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-19Don't silently drop warning flags passed in toDouglas Gregor
clang_createTranslationUnitFromSourceFile(). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123793 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-19lib/Sema/SemaExpr.cpp: __null should be LongLongTy on LLP64 Win64.NAKAMURA Takumi
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123791 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-19lib/CodeGen/TargetInfo.cpp: Fix coding style and erase an obsolete comment.NAKAMURA Takumi
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123790 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-18Teach UninitializedValuesV2 to implicitly reason about C++Ted Kremenek
references by monitoring whether an access to a variable is solely to compute it's lvalue or to do an lvalue-to-rvalue conversion (i.e., a load). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123777 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-18Add unnamed_addr in CreateRuntimeVariable.Rafael Espindola
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123773 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-18When redefining a macro don't warn twice if it's not used and don't warn for ↵Argyrios Kyrtzidis
duplicate definition by command line options. Fixes rdar://8875916. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123767 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-18Properly do a float -> _Complex double conversion, fixes rdar://8875946.Argyrios Kyrtzidis
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123759 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-18Fix some unnecessarily complicated code for canonicalizing variably-modifiedJohn McCall
parameter types. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123753 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-18Generalize some operations on qualifiers. QualType::getQualifiers() andJohn McCall
::getCVRQualifiers() now look through array types, like all the other standard queries. Also, make a 'split' variant of getUnqualifiedType(). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123751 91177308-0d34-0410-b5e6-96231b3b80d8