summaryrefslogtreecommitdiffstats
path: root/clang/lib
Commit message (Collapse)AuthorAgeFilesLines
* [analyzer] Make inlining decisions based on the callee being variadic.Jordan Rose2013-09-282-4/+17
| | | | | | | | | | | | ...rather than trying to figure it out from the call site, and having people complain that we guessed wrong and that a prototype-less call is the same as a variadic call on their system. More importantly, fix a crash when there's no decl at the call site (though we could have just returned a default value). <rdar://problem/15037033> llvm-svn: 191599
* Typo correction: _int64 -> __int64.Warren Hunt2013-09-281-1/+1
| | | | llvm-svn: 191592
* Implements some of the more commonly used intrinsics in Intrin.hWarren Hunt2013-09-271-0/+412
| | | | | | Differential Revision: http://llvm-reviews.chandlerc.com/D1766 llvm-svn: 191590
* Don't suggest namespaces if the next token is a '.'Kaelyn Uhrain2013-09-271-0/+3
| | | | llvm-svn: 191589
* TBAA: use the same format for scalar TBAA and struct-path aware TBAA.Manman Ren2013-09-272-15/+10
| | | | | | | Struct-path aware TBAA generates tags to specify the access path, while scalar TBAA only generates tags to scalar types. llvm-svn: 191586
* ObjectiveC migrator. Infer property from getters onlyFariborz Jahanian2013-09-271-1/+11
| | | | | | | if property name is a valid identifier in the underlying language. // rdar://15044184 llvm-svn: 191584
* Fix a bug where we failed to diagnose class template specializationChandler Carruth2013-09-271-0/+3
| | | | | | | | | uses. This fixes one of the two remaining failures to implement [[deprecated]] as specified for C++14. llvm-svn: 191572
* Replace -fobjc-default-synthesize-properties with ↵Rafael Espindola2013-09-272-5/+1
| | | | | | | | | disable-objc-default-synthesize-properties. We want the modern behavior most of the time, so inverting the option simplifies the driver and the tests. llvm-svn: 191551
* Mark variable template implementation as complete. Nearly all of the creditRichard Smith2013-09-271-1/+2
| | | | | | here goes to Larisse Voufo. llvm-svn: 191549
* Variable templates: handle instantiation of static data member templatesRichard Smith2013-09-277-160/+232
| | | | | | appropriately, especially when they appear within class templates. llvm-svn: 191548
* Don't give suggest things like function names on the left side of "=".Kaelyn Uhrain2013-09-271-0/+2
| | | | llvm-svn: 191545
* Avoid the hard-coded limit on the number of typo corrections attempted.Kaelyn Uhrain2013-09-271-15/+29
| | | | | | | | | | | | | | | Move some tests from typo-correction.cpp to typo-correction-pt2.cpp because they were running afoul of the hard-coded limit of 20 typos corrected. Some of the tests after it were still working due to the limit not applying to cached corrections and in cases where a non-NULL MemberContext is passed in to Sema::CorrectTypo. Most of the moved tests still passed after being moved, but the test involving "data_struct" had only been passing because the test had exceeded that limit so a fix for it is also included (most of the changes to ParseStmt.cpp are shared with and originated from another typo correction impovement that was split into a separate commit). llvm-svn: 191544
* Cache the location of failed typo corrections so that typo correctionKaelyn Uhrain2013-09-272-28/+29
| | | | | | isn't repeatedly attempted for the same identifier at the same location. llvm-svn: 191543
* clang-cl: pass /FI options to fallbackHans Wennborg2013-09-271-0/+4
| | | | | | | We started parsing /FI in r191442, and now we can pass it on to the fallback too. llvm-svn: 191537
* SourceManager: Open code isInMainFile.Benjamin Kramer2013-09-271-0/+30
| | | | | | | | | - We really shouldn't compute line numbers for every file that is asked if it's the main file, it destroys the lazy computation. - Invalid locations are no longer accounted to the main file, no other functionality change. llvm-svn: 191535
* Remove method that always returns true.Rafael Espindola2013-09-271-3/+1
| | | | llvm-svn: 191533
* [analyzer] Allow pre/post-statement checkers for UnaryOperator.Jordan Rose2013-09-271-20/+30
| | | | | | Found by Arthur Yoo. llvm-svn: 191532
* Added a comment and another test for the UT_ForIndentation optionAlexander Kornienko2013-09-271-0/+2
| | | | llvm-svn: 191530
* Implemented tab usage only for indentation (http://llvm.org/PR17363)Alexander Kornienko2013-09-276-90/+130
| | | | | | | | | | | | | | | | | | | Summary: Changed UseTab to be a enum with three options: Never, Always, ForIndentation (true/false are still supported when reading .clang-format). IndentLevel should currently be propagated correctly for all tokens, except for block comments. Please take a look at the general idea before I start dealing with block comments. Reviewers: klimek, djasper Reviewed By: klimek CC: cfe-commits Differential Revision: http://llvm-reviews.chandlerc.com/D1770 llvm-svn: 191527
* Abstract out the emission of vtables, add basic support for vtable emission ↵Timur Iskhodzhanov2013-09-2714-225/+429
| | | | | | | | when using -cxx-abi microsoft Reviewed at http://llvm-reviews.chandlerc.com/D1532 llvm-svn: 191523
* Correctly indent with tabs when whitespace starts from the column not ↵Alexander Kornienko2013-09-272-3/+12
| | | | | | | | | | | | | | | | | | divisible by TabWidth. Summary: The width of the first inserted tab character depends on the initial column, so we need to handle the first tab in a special manner. Reviewers: klimek, djasper Reviewed By: klimek CC: cfe-commits Differential Revision: http://llvm-reviews.chandlerc.com/D1763 llvm-svn: 191497
* clang-format: Improve formatting of functions with multiple trailing tokens.Daniel Jasper2013-09-271-1/+4
| | | | | | | | | | | | | Before: void SomeFunction(aaaaaaaaaaaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaaaaaaaaaaaa) override final; After: void SomeFunction(aaaaaaaaaaaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaaaaaaaaaaaa) override final; llvm-svn: 191494
* AST: Handle multidimensional arrays inside of __uuidof()David Majnemer2013-09-271-1/+1
| | | | | | | | We previously handled one-dimensional arrays but didn't consider the general case. The fix is simple: keep going through subsequent dimensions until we get to the base element. llvm-svn: 191493
* clang-format: Fix formatting bug with comment in weird place.Daniel Jasper2013-09-271-1/+4
| | | | | | | | | | | | | | Before: template <typename T> // T should be one of {A, B}. void f() {} After: template <typename T> // T should be one of {A, B}. void f() {} llvm-svn: 191492
* AST: Handle qualified array types in typeid() expressionsDavid Majnemer2013-09-276-15/+17
| | | | | | | | | | | | The intent of getTypeOperand() was to yield an unqualified type. However QualType::getUnqualifiedType() does not strip away qualifiers on arrays. N.B. This worked fine when typeid() was applied to an expression because we would inject as implicit cast to the unqualified array type in the AST. llvm-svn: 191487
* NumericLiteralParser::ParseNumberStartingWithZero(): Try to appease MSC16's ↵NAKAMURA Takumi2013-09-271-2/+5
| | | | | | | | miscompilation. Investigating yet. It seems msc16 miscompiles s[1] to be folded. llvm-svn: 191485
* Sema: Respect -fdelayed-template-parsing when parsing constexpr functionsDavid Majnemer2013-09-271-3/+5
| | | | | | | | | | | | | | Functions declared as constexpr must have their parsing delayed in -fdelayed-template-parsing mode so as not to upset later template instantiation. N.B. My reading of the standard makes it seem like delayed template parsing is at odds with constexpr. We may want to make refinements in other places in clang to make constexpr play nicer with this feature. This fixes PR17334. llvm-svn: 191484
* Remove some stray underscores from copyright block. Fix first line length to ↵Craig Topper2013-09-271-2/+2
| | | | | | match length of the one after the copyright block. llvm-svn: 191483
* ObjectiveC migrator: Donlt annotate NS_RETURNS_INNER_POINTERFariborz Jahanian2013-09-261-0/+1
| | | | | | on class methods, as it makes no sense. // rdar://15069200 llvm-svn: 191468
* ObjectiveC migrator: function pointer is not anFariborz Jahanian2013-09-261-1/+2
| | | | | | | | inner pointer for annotation to objc_returns_inner_pointer purposes. // rdar://15044991 llvm-svn: 191465
* Debug info: Fix a crash when trying to construct a type with redundantAdrian Prantl2013-09-261-1/+5
| | | | | | | ownership qualifiers. Fixes rdar://problem/14990656. llvm-svn: 191463
* Remove an unused variable - thanks to Nick Lewycky for pointing this out!Faisal Vali2013-09-261-1/+0
| | | | llvm-svn: 191462
* Fix error recovery when a return type correction includes a new name specifier.Kaelyn Uhrain2013-09-261-1/+6
| | | | llvm-svn: 191459
* Implement a rudimentary form of generic lambdas.Faisal Vali2013-09-2617-86/+334
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Specifically, the following features are not included in this commit: - any sort of capturing within generic lambdas - generic lambdas within template functions and nested within other generic lambdas - conversion operator for captureless lambdas - ensuring all visitors are generic lambda aware (Although I have gotten some useful feedback on my patches of the above and will be incorporating that as I submit those patches for commit) As an example of what compiles through this commit: template <class F1, class F2> struct overload : F1, F2 { using F1::operator(); using F2::operator(); overload(F1 f1, F2 f2) : F1(f1), F2(f2) { } }; auto Recursive = [](auto Self, auto h, auto ... rest) { return 1 + Self(Self, rest...); }; auto Base = [](auto Self, auto h) { return 1; }; overload<decltype(Base), decltype(Recursive)> O(Base, Recursive); int num_params = O(O, 5, 3, "abc", 3.14, 'a'); Please see attached tests for more examples. This patch has been reviewed by Doug and Richard. Minor changes (non-functionality affecting) have been made since both of them formally looked at it, but the changes involve removal of supernumerary return type deduction changes (since they are now redundant, with richard having committed a recent patch to address return type deduction for C++11 lambdas using C++14 semantics). Some implementation notes: - Add a new Declarator context => LambdaExprParameterContext to clang::Declarator to allow the use of 'auto' in declaring generic lambda parameters - Add various helpers to CXXRecordDecl to facilitate identifying and querying a closure class - LambdaScopeInfo (which maintains the current lambda's Sema state) was augmented to house the current depth of the template being parsed (id est the Parser calls Sema::RecordParsingTemplateParameterDepth) so that SemaType.cpp::ConvertDeclSpecToType may use it to immediately generate a template-parameter-type when 'auto' is parsed in a generic lambda parameter context. (i.e we do NOT use AutoType deduced to a template parameter type - Richard seemed ok with this approach). We encode that this template type was generated from an auto by simply adding $auto to the name which can be used for better diagnostics if needed. - SemaLambda.h was added to hold some common lambda utility functions (this file is likely to grow ...) - Teach Sema::ActOnStartOfFunctionDef to check whether it is being called to instantiate a generic lambda's call operator, and if so, push an appropriately prepared LambdaScopeInfo object on the stack. - various tests were added - but much more will be needed. There is obviously more work to be done, and both Richard (weakly) and Doug (strongly) have requested that LambdaExpr be removed form the CXXRecordDecl LambdaDefinitionaData in a future patch which is forthcoming. A greatful thanks to all reviewers including Eli Friedman, James Dennett, and especially the two gracious wizards (Richard Smith and Doug Gregor) who spent hours providing feedback (in person in Chicago and on the mailing lists). And yet I am certain that I have allowed unidentified bugs to creep in; bugs, that I will do my best to slay, once identified! Thanks! llvm-svn: 191453
* Fix a bug in the typo correction replacement location.Kaelyn Uhrain2013-09-261-1/+3
| | | | | | | | I noticed the wrong text was being replaced with the correction while working on expanding the "namespace-aware" typo correction to include classes. llvm-svn: 191450
* Teach typo correction to look inside of classes like it does namespaces.Kaelyn Uhrain2013-09-262-5/+104
| | | | | | | | | | | | | | | Unlike with namespaces, searching inside of classes requires also checking the access to correction candidates (i.e. don't suggest a correction to a private class member for a correction occurring outside that class and its methods or friends). Included is a small (one line) fix for a bug, that was uncovered while cleaning up the unit tests, where the decls from a TypoCorrection candidate were preserved in new TypoCorrection candidates that are derived (copied) from the old TypoCorrection--notably when creating a new candidate by changing the NestedNameSpecifier associated with the base idenitifer. llvm-svn: 191449
* Per updates to D3781, allow underscore under ' in a pp-number, and allow ' ↵Richard Smith2013-09-262-1/+6
| | | | | | in a #line directive. llvm-svn: 191443
* Mark an impossible path as unreachable to pacify GCC.Benjamin Kramer2013-09-261-0/+1
| | | | llvm-svn: 191436
* Remove tabs.Benjamin Kramer2013-09-261-91/+91
| | | | llvm-svn: 191427
* Fix buildbot breakage.Richard Smith2013-09-261-4/+4
| | | | llvm-svn: 191424
* Replace a bool with an enum for clarity, based on review comment from James ↵Richard Smith2013-09-261-7/+8
| | | | | | Dennett. llvm-svn: 191420
* If a partial specialization of a member template is declared within a classRichard Smith2013-09-262-5/+17
| | | | | | | | | template and defined outside it, don't instantiate it twice when instantiating the surrounding class template specialization. That would cause us to reject the code because we think two partial specializations instantiated to produce the same signature. llvm-svn: 191418
* Implement C++1y digit separator proposal (' as a digit separator). This is notRichard Smith2013-09-262-4/+51
| | | | | | yet approved by full committee, but was unanimously supported by EWG. llvm-svn: 191417
* [OPENMP] Improved variable lookup procedure for threadprivate variables.Alexey Bataev2013-09-262-4/+38
| | | | llvm-svn: 191416
* Provide inline definitions of _Unwind_GetIP etc. for ARM in unwind.hHans Wennborg2013-09-251-3/+35
| | | | | | | | | | | These symbols were showing up as undefined when trying to link programs on Android. We should match libgcc's behaviour and provide inline definitions of these on ARM. It seems unwind.h on ARM/Darwin doesn't provide inline definitions, so we just declare them for that platform. llvm-svn: 191406
* Remove unused param from MicrosoftMangle::mangleCallingConvention()Reid Kleckner2013-09-251-4/+3
| | | | llvm-svn: 191405
* ObjectiveC: Handle the case of qualifying protocolsFariborz Jahanian2013-09-252-0/+26
| | | | | | | | | declared in a typedef declaraton used as super class of an ObjC class. Curretnly, these protocols are dropped from the class hierarchy. Test shows that it is now included. // rdar://15051465 llvm-svn: 191395
* PR17359: Fix off-by-one OOB on _Pragma("") and an unescaping bugReid Kleckner2013-09-251-7/+7
| | | | | | | Previously the code would reduce a run of backslashes to a single backslash, and now it will properly leave behind every other backslash. llvm-svn: 191382
* [analyzer] Handle destructors for the argument to C++ 'delete'.Jordan Rose2013-09-254-3/+31
| | | | | | | | | | | | | | | | | Now that the CFG includes nodes for the destructors in a delete-expression, process them in the analyzer using the same common destructor interface currently used for local, member, and base destructors. Also, check for when the value is known to be null, in which case no destructor is actually run. This does not yet handle destructors for deleted /arrays/, which may need more CFG work. It also causes a slight regression in the location of double delete warnings; the double delete is detected at the destructor call, which is implicit, and so is reported on the first access within the destructor instead of at the 'delete' statement. This will be fixed soon. Patch by Karthik Bhat! llvm-svn: 191381
* Produce an error if a -cc1 only option is passed to the driver.Rafael Espindola2013-09-251-1/+1
| | | | llvm-svn: 191380
OpenPOWER on IntegriCloud