summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaOverload.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Partially revert r175117 so that we don't break assumptions about howRafael Espindola2013-02-141-0/+8
| | | | | | | static functions in extern "C" contexts are mangled. Should fix the bootstrap. llvm-svn: 175132
* merge hasCLanguageLinkage and isExternC. Keep the shorter name.Rafael Espindola2013-02-141-1/+1
| | | | | | | | | | I added hasCLanguageLinkage while fixing some language linkage bugs some time ago so that I wouldn't have to check all users of isExternC. It turned out to be a much longer detour than expected, but this patch finally merges the two again. The isExternC function now implements just the standard notion of having C language linkage. llvm-svn: 175119
* The meat of this patch is in BuildCXXMemberCalLExpr where we make it useNick Lewycky2013-02-121-2/+0
| | | | | | | | | | | | MarkMemberReferenced instead of marking functions referenced directly. An audit of callers to MarkFunctionReferenced and DiagnoseUseOfDecl also caused a few other changes: * don't mark functions odr-used when considering them for an initialization sequence. Do mark them referenced though. * the function nominated by the cleanup attribute should be diagnosed. * operator new/delete should be diagnosed when building a 'new' expression. llvm-svn: 174951
* Enable overloading of OpenCL events - this is needed for the overloaded ↵Guy Benyei2013-02-071-0/+6
| | | | | | OpenCL builtin functions. llvm-svn: 174630
* Add OpenCL samplers as Clang builtin types and check sampler related ↵Guy Benyei2013-02-071-1/+3
| | | | | | restrictions. llvm-svn: 174601
* Apply the pure-virtual odr rule to other constructs which can call overloadedNick Lewycky2013-02-071-25/+14
| | | | | | operators. llvm-svn: 174584
* Improve 'failed template argument deduction' diagnostic for the case where weRichard Smith2013-01-311-31/+57
| | | | | | | | have a direct mismatch between some component of the template and some component of the argument. The diagnostic now says what the mismatch was, but doesn't yet say which part of the template doesn't match. llvm-svn: 174039
* Replace "failed template argument deduction" diagnostic with something usefulRichard Smith2013-01-311-2/+22
| | | | | | in the one case where we've already factored out a reason code. llvm-svn: 174036
* Fix mismatch between pointer and pointee type when diagnosing an incorrectRichard Smith2013-01-261-3/+2
| | | | | | object argument type for a member call. llvm-svn: 173554
* Start checking nonnull (as well as format and argument_with_type_tag) onNick Lewycky2013-01-241-0/+7
| | | | | | overloaded binary operators. llvm-svn: 173315
* Fix some wonky formatting, remove spurious emacs major mode marker. NoNick Lewycky2013-01-241-1/+1
| | | | | | functionality change! llvm-svn: 173314
* Add a new LangOpt NativeHalfType. This option allows for native half/fp16Joey Gouly2013-01-231-1/+2
| | | | | | | | operations (as opposed to storage only half/fp16). Also add some semantic checks for OpenCL half types. llvm-svn: 173254
* Fix regression in r172376. Don't try to detect missing 'constexpr' specifiersRichard Smith2013-01-141-2/+1
| | | | | | | on redeclarations, since that makes us pick wrong prior declarations under some circumstances. llvm-svn: 172384
* PR12008: defer adding the implicit 'const' to a constexpr member function untilRichard Smith2013-01-141-19/+28
| | | | | | we know whether it is static. llvm-svn: 172376
* Remove useless 'llvm::' qualifier from names like StringRef and others that areDmitri Gribenko2013-01-121-16/+16
| | | | | | brought into 'clang' namespace by clang/Basic/LLVM.h llvm-svn: 172323
* Fix a regression from 171193: main cannot be overloaded.Rafael Espindola2013-01-121-0/+5
| | | | | | Thanks Eli Friedman for noticing it. llvm-svn: 172292
* s/CPlusPlus0x/CPlusPlus11/gRichard Smith2013-01-021-4/+4
| | | | llvm-svn: 171367
* Reject overloading of two static extern C functions.Rafael Espindola2012-12-281-1/+9
| | | | | | | | This patch moves hasCLanguageLinkage to be VarDecl and FunctionDecl methods so that they can be used from SemaOverload.cpp and then fixes the logic in Sema::IsOverload. llvm-svn: 171193
* Improve diagnostic wording for when an implicitly-deleted special memberRichard Smith2012-12-281-9/+6
| | | | | | function is selected by overload resolution. llvm-svn: 171190
* PR14695: Fix assert from bad cast<>. Not every namespace is a NamespaceDecl; ↵Richard Smith2012-12-221-5/+12
| | | | | | it might instead be a TranslationUnitDecl. llvm-svn: 170976
* Change DeclContextLookup(Const)Result to (Mutable)ArrayRef<NamedDecl*>, as ↵David Blaikie2012-12-191-4/+4
| | | | | | | | | | | | | | | per review discussion in r170365 This does limit these typedefs to being sequences, but no current usage requires them to be contiguous (we could expand this to a more general iterator pair range concept at some point). Also, it'd be nice if SmallVector were constructible directly from an ArrayRef but this is a bit tricky since ArrayRef depends on SmallVectorBaseImpl for the inverse conversion. (& generalizing over all range-like things, while nice, would require some nontrivial SFINAE I haven't thought about yet) llvm-svn: 170482
* Fix overload resolution for the initialization of a multi-dimensionalRichard Smith2012-12-091-1/+1
| | | | | | | | | | array from a braced-init-list. There seems to be a core wording wart here (it suggests we should be testing whether the elements of the init list are implicitly convertible to the array element type, not whether there is an implicit conversion sequence) but our prior behavior appears to be a bug, not a deliberate effort to implement the standard as written. llvm-svn: 169690
* Sort all of Clang's files under 'lib', and fix up the broken headersChandler Carruth2012-12-041-8/+9
| | | | | | | | | | | | | uncovered. This required manually correcting all of the incorrect main-module headers I could find, and running the new llvm/utils/sort_includes.py script over the files. I also manually added quite a few missing headers that were uncovered by shuffling the order or moving headers up to be main-module-headers. llvm-svn: 169237
* Don't return a pointer to an UnresolvedSetImpl in the CXXRecordDecl interface,Argyrios Kyrtzidis2012-11-281-25/+30
| | | | | | expose only the iterators instead. llvm-svn: 168770
* Sema: Provide a valid source location when instantiating templates based on ↵Benjamin Kramer2012-11-231-1/+1
| | | | | | | | a CXXDefaultArgExpr. Fixes PR13758. llvm-svn: 168521
* When we have a MemberExpr referring to an overloaded static member function,Richard Smith2012-11-141-0/+1
| | | | | | | | | and we resolve it to a specific function based on the type which it's used as, don't forget to mark it as referenced. Fixes a regression introduced in r167514. llvm-svn: 167918
* When filtering the list of associated namespaces so that we don't suggest peopleNick Lewycky2012-11-131-11/+9
| | | | | | | add functions to namespace 'std', also filter out namespaces with '__' anywhere in the name. llvm-svn: 167786
* Use isInvalidDecl() instead of isStatic() as suggested by dblaikie.Nico Weber2012-11-091-1/+1
| | | | | | | I couldn't think of a way to make an operator() invalid without returning earlier from this function other than making it static, so no new test. llvm-svn: 167609
* Don't crash on calling static member overloaded operator, PR14120Nico Weber2012-11-091-0/+5
| | | | | | Patch from Brian Brooks! llvm-svn: 167604
* Fix a bug I found while preparing my devmtg talk: When passing NULL to aMatt Beaumont-Gay2012-11-081-2/+12
| | | | | | | | | | | | function that takes a const Foo&, where Foo is convertible from a large number of pointer types, we print ALL the overloads, no matter the setting of -fshow-overloads. There is potential follow-on work in unifying the "print candidates, but not too many" logic between OverloadCandidateSet::NoteCandidates and ImplicitConversionSequence::DiagnoseAmbiguousConversion. llvm-svn: 167596
* PR11851 (and duplicates): Whenever a constexpr function is referenced,Richard Smith2012-11-071-9/+0
| | | | | | | | | instantiate it if it can be instantiated and implicitly define it if it can be implicitly defined. This matches g++'s approach. Remove some cases from SemaOverload which were marking functions as referenced when just planning how overload resolution would proceed; such cases are not actually references. llvm-svn: 167514
* Use a .def file for most of the diagnostic options.Douglas Gregor2012-10-231-3/+2
| | | | llvm-svn: 166520
* DR1442: In a range-based for statement, namespace 'std' is not an associatedRichard Smith2012-10-181-13/+5
| | | | | | namespace. llvm-svn: 166194
* Clearing a SmallPtrSet is still expensive, split it out from ↵Benjamin Kramer2012-10-091-1/+5
| | | | | | OverloadCandidateSet::clear and don't do it on destruction. llvm-svn: 165501
* StringRef-ify Binary/UnaryOperator::getOpcodeStrDavid Blaikie2012-10-081-2/+2
| | | | llvm-svn: 165383
* Add FP_CONTRACT support for clang.Lang Hames2012-10-021-14/+16
| | | | | | | | Clang will now honor the FP_CONTRACT pragma and emit LLVM fmuladd intrinsics for expressions of the form A * B + C (when they occur in a single statement). llvm-svn: 164989
* Fix crash when a decltype expression in a trailing return type refers to theRichard Smith2012-09-251-0/+23
| | | | | | | | | | function being instantiated. An error recovery codepath was recursively performing name lookup (and triggering an unbounded stack of template instantiations which blew out the stack before hitting the depth limit). Patch by Wei Pan! llvm-svn: 164586
* Remove Context argument from TemplateDeductionInfo constructor. It was no ↵Craig Topper2012-09-191-5/+5
| | | | | | longer needed after the unused Context member was removed in r164104. llvm-svn: 164196
* Fix a small bug in the way we handle builtin candidates forEli Friedman2012-09-181-10/+12
| | | | | | relational operators of enumeration type. From the gcc testsuite. llvm-svn: 164171
* Revert r163829. The world (or libstdc++, at least) is not ready.Richard Smith2012-09-131-0/+6
| | | | llvm-svn: 163846
* Implement C++11 [conv.prom]p4: an enumeration with a fixed underlying type hasRichard Smith2012-09-131-1/+15
| | | | | | | | | integral promotions to both its underlying type and to its underlying type's promoted type. This matters now that boolean conversions aren't permitted in converted constant expressions (a la DR1407): an enumerator with a fixed underlying type of bool still can be. llvm-svn: 163841
* Don't perform template argument deduction against invalid templates;Douglas Gregor2012-09-131-0/+7
| | | | | | | it's likely to lead to a crash later on. Fixes PR12933 / <rdar://problem/11525335>. llvm-svn: 163838
* Remove speculative fix for C++ core issue 1407, since it was resolved as NAD.Richard Smith2012-09-131-6/+0
| | | | llvm-svn: 163829
* Instantiate class template specializations during ADL.John McCall2012-08-241-1/+1
| | | | llvm-svn: 162586
* Push ArrayRef through the Expr hierarchy.Benjamin Kramer2012-08-241-15/+20
| | | | | | No functionality change. llvm-svn: 162552
* Rip out remnants of move semantic emulation and smart pointers in Sema.Benjamin Kramer2012-08-231-3/+3
| | | | | | | These were nops for quite a while and only lead to confusion. ASTMultiPtr now behaves like a proper dumb array reference. llvm-svn: 162475
* Better diagnostics for range-based for loops with bad range types.Sam Panzer2012-08-211-57/+176
| | | | | | | | | | | | | The old error message stating that 'begin' was an undeclared identifier is replaced with a new message explaining that the error is in the range expression, along with which of the begin() and end() functions was problematic if relevant. Additionally, if the range was a pointer type or defines operator*, attempt to dereference the range, and offer a FixIt if the modified range works. llvm-svn: 162248
* Test commit: deleted whitespace on blank lineSam Panzer2012-08-161-1/+1
| | | | llvm-svn: 162006
* Implement warning for integral null pointer constants other than the literal 0.David Blaikie2012-08-081-7/+11
| | | | | | | | | | | | | | | | | | | | This is effectively a warning for code that violates core issue 903 & thus will become standard error in the future, hopefully. It catches strange null pointers such as: '\0', 1 - 1, const int null = 0; etc... There's currently a flaw in this warning (& the warning for 'false' as a null pointer literal as well) where it doesn't trigger on comparisons (ptr == '\0' for example). Fix to come in a future patch. Also, due to this only being a warning, not an error, it triggers quite frequently on gtest code which tests expressions for null-pointer-ness in a SFINAE context (so it wouldn't be a problem if this was an error as in an actual implementation of core issue 903). To workaround this for now, the diagnostic does not fire in unevaluated contexts. Review by Sean Silva and Richard Smith. llvm-svn: 161501
* Fix some minor typosSylvestre Ledru2012-07-311-1/+1
| | | | llvm-svn: 161036
OpenPOWER on IntegriCloud