aboutsummaryrefslogtreecommitdiff
path: root/lib/Sema
AgeCommit message (Collapse)Author
2012-01-21Add obvious missing call to MarkDeclarationReferenced.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148611 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-21Make clang's AST model sizeof and typeof with potentially-evaluated operands ↵Eli Friedman
correctly, similar to what we already do with typeid. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148610 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-21Fix the code completion string for variadic macros with more than oneDouglas Gregor
argument, which was broken and very ugly (and even had a test case to make *sure* it was broken and ugly). Fixes <rdar://problem/10609117>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148606 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-20Delayed template instantiation of late-parsed attributes.DeLesley Hutchins
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148595 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-20Instantiate dependent attributes when instantiating templates.DeLesley Hutchins
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148592 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-20More dead code removal (using -Wunreachable-code)David Blaikie
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148577 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-20Replace a dubious use of SmallVectorImpl with a proper copy.Benjamin Kramer
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148549 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-20Localize variable, remove unused assignment.Benjamin Kramer
Found by the clang static analyzer. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148544 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-20Remove unused variables.Benjamin Kramer
Found by clang's own static analyzer. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148542 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-20Remove PotentiallyPotentiallyEvaluated, and replace it with a much simpler ↵Eli Friedman
and less error-prone way of handling the relevant cases. Towards marking of whether a declaration is used more accurately. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148522 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-19An instantiation of a constexpr static data member in a class template isRichard Smith
constexpr. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148505 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-19A few style changes.Tanya Lattner
Change CheckVectorLogicalOperands to pass params by ref. Add another test case. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148452 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-19Remove the now-unused CorrectTypoContext enum.Kaelyn Uhrain
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148441 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-18constexpr: converted constant expression handling for enumerator values, caseRichard Smith
values and non-type template arguments of integral and enumeration types. This change causes some legal C++98 code to no longer compile in C++11 mode, by enforcing the C++11 rule that narrowing integral conversions are not permitted in the final implicit conversion sequence for the above cases. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148439 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-18Convert SemaDecl.cpp to pass callback objects to CorrectTypo.Kaelyn Uhrain
Includes tests highlighting the cases where accuracy has improved (there is one call that does no filtering beyond selecting the set of allowed keywords, and one call that only triggers for ObjC code for which a test by someone who knows ObjC would be welcome). Also fixes a small typo in one of the suggestion messages, and drops a malformed "expected-note" for a suggestion that did not occur even when the malformed note was committed as r145930. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148420 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-18objc: deprecate direct usage of 'isa' of objc objectsFariborz Jahanian
in favor of usage of api's intended for. // rdar://8290002 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148404 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-18Fix char literal types in CSeth Cantrell
L'x' is actually wchar_t support C11 u and U char literals git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148390 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-18Convert DiagnoseEmptyLookup to use correction callbacks.Kaelyn Uhrain
No new unit tests yet as there is no behavioral change (except for slightly more specific filtering in Sema::ActOnStartOfLambdaDefinition). Tests will be added as the code paths are traced in greater depth to determine how to improve the results--there are at least one or two known bugs that require those improvements. This commit lays the groundwork for those changes. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148382 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-18Move narrowing conversion detection code from SemaInit to SemaOverload, readyRichard Smith
for it to be used in converted constant expression checking, and fix a couple of issues: - Conversion operators implicitly invoked prior to the narrowing conversion were not being correctly handled when determining whether a constant value was narrowed. - For conversions from floating-point to integral types, the diagnostic text incorrectly always claimed that the source expression was not a constant expression. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148381 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-18Make PotentiallyPotentiallyEvaluated contexts work correctly when ↵Eli Friedman
referencing a class field from outside an instance method. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148376 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-18The value of a case statement is a potentially evaluated context. Found by ↵Eli Friedman
inspection. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148373 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-18Fix a couple issues where we didn't correctly delay diagnostics in ↵Eli Friedman
PotentiallyPotentiallyEvaluated contexts. In preparation for making sizeof() PotentiallyPotentiallyEvaluated. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148367 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-17objc-arc: when 'assign' attribute is unspecified,Fariborz Jahanian
rely on property's type for its life-time to avoid bogus warning with -Warc-unsafe-retained-assign. // rdar://10694932 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148355 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-17Add Sema::isInitListConstructor. This will be needed for upcoming work.Sebastian Redl
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148354 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-17Auto deduction support for std::initializer_list, including for-range ↵Sebastian Redl
support. This means you can now write: for (int i : {1, 4, 512, 23, 251}) {} git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148353 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-17Template argument deduction for std::initializer_list arguments from ↵Sebastian Redl
initializer lists. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148352 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-17Rename the first of 11 DeduceTemplateArguments overloads.Sebastian Redl
There are 5 functions of this name in Sema, and 6 more static helpers in SemaTemplateDeduction.cpp. The Sema functions have jobs like "deduce for function call", "deduce for taking the address", etc. The static helpers have jobs like "deduce by comparing two types", "deduce by comparing two lists of types", "deduce by comparing two template arguments", etc. The fact that they all are called the same and only differ in two of their 6 or more arguments makes the code using them very hard to read. Here I rename the one function that concerns me most at the moment, but as a matter of cleanup, the others will eventually be renamed as well. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148351 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-17Basic overloading support for std::initializer_list.Sebastian Redl
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148350 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-17Sema support for initialization of std::initializer_list from initializer lists.Sebastian Redl
This does not yet support CodeGen. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148349 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-17Add Sema::isStdInitializerList, which will be necessary for the upcoming ↵Sebastian Redl
operations. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148348 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-17Correctly resolve an overload set passed to an overloaded operator=. PR11784.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148335 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-17Fix a couples of issues in format strings checking.Jean-Daniel Dupas
PR 10274: format function attribute with the NSString archetype yields no compiler warnings PR 10275: format function attribute isn't checked in Objective-C methods git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148324 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-17objc: fixes a bug where struct used inside anFariborz Jahanian
objc class was not being exported to parent decl context resulting in bogus mismatch warning later on. // rdar://10655530 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148320 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-17Delay the creation of the built-in Objective-C class 'Protocol' byDouglas Gregor
moving it from a "special type" to a predefined declaration, as we do for id, Class, and SEL. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148313 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-17Re-add an over-zealously removed break.David Blaikie
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148296 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-17Remove dead comments as per Chandler's feedback to r148292David Blaikie
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148294 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-17Remove unreachable code in Clang. (replace with llvm_unreachable where ↵David Blaikie
appropriate or when GCC requires it) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148292 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-17Remove unnecessary default cases in switches over enums.David Blaikie
This allows -Wswitch-enum to find switches that need updating when these enums are modified. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148281 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-17Introduce a CodeCompletionResult::CreateCodeCompletionString() thatArgyrios Kyrtzidis
does not depend on Sema, it accepts an ASTContext and a Preprocessor. Step towards making clang_getCursorCompletionString not depend on Sema. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148278 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-17Introduce a static Sema::MarkDeducedTemplateParameters() that only dependsArgyrios Kyrtzidis
on an ASTContext. This is a step towards making clang_getCursorCompletionString not depend on Sema. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148277 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-17Revert r148271; this requires more thought.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148276 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-17Change the behavior of the lvalue-to-rvalue conversion for varargs in ↵Eli Friedman
PotentiallyPotentiallyEvaluated contexts so that we model it in a sane way in most cases, and give up for the edge case which hopefully doesn't matter too much. In preparation for correctly treating sizeof() as a PotentiallyPotentiallyEvaluated context. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148271 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-17Use Builtin ID as the return valueAnna Zaks
for FunctionDecl::getMemoryFunctionKind(). This is a follow up on the Chris's review for r148142: We don't want to pollute FunctionDecl with an extra enum. (To make this work, added memcmp and family to the library builtins.) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148267 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-16Add support for OpenCL 1.1 logical operations.Tanya Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148254 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-16Add some calls to MarkDeclarationReferenced, towards a point where every ↵Eli Friedman
declaration which is used is marked as used. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148253 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-16Some improvements to the handling of C11 atomic types:David Chisnall
- Add atomic-to/from-nonatomic cast types - Emit atomic operations for arithmetic on atomic types - Emit non-atomic stores for initialisation of atomic types, but atomic stores and loads for every other store / load - Add a __atomic_init() intrinsic which does a non-atomic store to an _Atomic() type. This is needed for the corresponding C11 stdatomic.h function. - Enables the relevant __has_feature() checks. The feature isn't 100% complete yet, but it's done enough that we want people testing it. Still to do: - Make the arithmetic operations on atomic types (e.g. Atomic(int) foo = 1; foo++;) use the correct LLVM intrinsic if one exists, not a loop with a cmpxchg. - Add a signal fence builtin - Properly set the fenv state in atomic operations on floating point values - Correctly handle things like _Atomic(_Complex double) which are too large for an atomic cmpxchg on some platforms (this requires working out what 'correctly' means in this context) - Fix the many remaining corner cases git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148242 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-16Refactor variables unused under non-assert builds.David Blaikie
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148229 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-15Pedantic diagnostic correction: in C++, we have integral constant expressions,Richard Smith
not integer constant expressions. In passing, fix the 'folding is an extension' diagnostic to not claim we're accepting the code, since that's not true in -pedantic-errors mode, and add this diagnostic to -Wgnu. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148209 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-14Use a smaller vector than SmallVector.Benjamin Kramer
Shrinks OverloadCandidate from 208 to 168 bytes. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148204 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-14Clear ImplicitConversionSequence the obvious way which turns out to be less ↵Benjamin Kramer
fragile. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148200 91177308-0d34-0410-b5e6-96231b3b80d8