summaryrefslogtreecommitdiffstats
path: root/clang/www
Commit message (Collapse)AuthorAgeFilesLines
...
* [Sema] Implement Core 2094: Trivial copy/move constructor for class with ↵Eric Fiselier2017-05-091-2/+2
| | | | | | | | | | | | | | | | volatile member Summary: This patch implements http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#2094 which reverts Core 496. Reviewers: rsmith Reviewed By: rsmith Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D32984 llvm-svn: 302593
* Update Clang C++ DR documentation for new issue listEric Fiselier2017-05-091-324/+360
| | | | llvm-svn: 302592
* Implement DR 373 "Lookup on namespace qualified name in using-directive"Matthias Gehre2017-03-171-1/+1
| | | | | | | | | | | | | | Summary: 3.4.6 [basic.lookup.udir] paragraph 1: In a using-directive or namespace-alias-definition, during the lookup for a namespace-name or for a name in a nested-name-specifier, only namespace names are considered. Reviewers: rsmith, aaron.ballman Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D30848 llvm-svn: 298126
* Make table cells referring to Clang 4 green, as Clang 4 has been released.Ed Schouten2017-03-161-8/+8
| | | | llvm-svn: 297956
* [analyzer] Extend block in critical section check with C11 and Pthread APIs.Gabor Horvath2017-03-101-0/+24
| | | | | | | | Patch by Zoltan Daniel Torok! Differential Revision: https://reviews.llvm.org/D29567 llvm-svn: 297461
* Update cxx_dr_status page.Richard Smith2017-02-251-3/+3
| | | | llvm-svn: 296276
* [c++1z] Mark constexpr lambdas as done on status page and start advertisingRichard Smith2017-02-211-1/+1
| | | | | | | | them via feature test macro __cpp_constexpr. Thanks to Faisal for implementing this feature! llvm-svn: 295791
* [c++1z] Diagnose non-deducible template parameters in deduction guide ↵Richard Smith2017-02-161-2/+1
| | | | | | templates, per [temp.param]p11. llvm-svn: 295264
* [c++1z] Add some more tests for class template argument deduction, addRichard Smith2017-02-141-2/+2
| | | | | | feature-test macro, and mark feature as done on status page. llvm-svn: 295011
* Disallow explicit instantiation and explicit specialization for deduction ↵Richard Smith2017-02-091-2/+6
| | | | | | guides. llvm-svn: 294641
* Finish implementation of C++ DR1310 (http://wg21.link/cwg1310).Richard Smith2017-01-201-2/+2
| | | | | | | Diagnose the case when a dependent template name instantiates to an injected-class-name outside a nested-name-specifier. llvm-svn: 292545
* PR13403 (+duplicates): implement C++ DR1310 (http://wg21.link/cwg1310).Richard Smith2017-01-191-3/+3
| | | | | | | | | | | | | | | | | | | | | | Under this defect resolution, the injected-class-name of a class or class template cannot be used except in very limited circumstances (when declaring a constructor, in a nested-name-specifier, in a base-specifier, or in an elaborated-type-specifier). This is apparently done to make parsing easier, but it's a pain for us since we don't know whether a template-id using the injected-class-name is valid at the point when we annotate it (we don't yet know whether the template-id will become part of an elaborated-type-specifier). As a tentative resolution to a perceived language defect, mem-initializer-ids are added to the list of exceptions here (they generally follow the same rules as base-specifiers). When the reference to the injected-class-name uses the 'typename' or 'template' keywords, we permit it to be used to name a type or template as an extension; other compilers also accept some cases in this area. There are also a couple of corner cases with dependent template names that we do not yet diagnose, but which will also get this treatment. llvm-svn: 292518
* PR9551: Implement DR1004 (http://wg21.link/cwg1004).Richard Smith2017-01-181-2/+2
| | | | | | | | This rule permits the injected-class-name of a class template to be used as both a template type argument and a template template argument, with no extra syntax required to disambiguate. llvm-svn: 292426
* Implement DR1265 (wg21.link/cwg1265).Richard Smith2017-01-131-2/+2
| | | | | | | | | | | | Diasllow a declaration using the 'auto' type specifier from using two different meanings of it at once, or from declaring multiple functions with deduced return types or introducing multiple trailing return types. The standard does not technically disallow the multiple trailing return types case if all the declarators declare variables (such as function pointers with trailing return types), but we disallow that too, following the clear intent. llvm-svn: 291880
* Update C++ status pages for Clang 4 branch:Richard Smith2017-01-133-29/+32
| | | | | | | | | | | | * Update version number in DR tests from 4.0 to 4 * Teach make_cxx_dr_status script about version numbers that don't contain a period. * Update cxx_status.html and cxx_dr_status.html to list Clang 4 features as "Clang 4" rather than "SVN" Clang 4 features are still listed in yellow rather than green until release. llvm-svn: 291871
* [Docs][OpenCL] Added OpenCL feature description to Clang documentation.Anastasia Stulova2017-01-121-4/+4
| | | | | | | Updated index and UsersManual with OpenCL description. Review: https://reviews.llvm.org/D28080 llvm-svn: 291780
* Implement C++ DR1391 (wg21.link/cwg1391)Richard Smith2017-01-091-1/+1
| | | | | | | | | | | | | | Check for implicit conversion sequences for non-dependent function template parameters between deduction and substitution. The idea is to accept as many cases as possible, on the basis that substitution failure outside the immediate context is much more common during substitution than during implicit conversion sequence formation. This re-commits r290808, reverted in r290811 and r291412, with a couple of fixes for handling of explicitly-specified non-trailing template argument packs. llvm-svn: 291427
* Implement DR1388 (wg21.link/cwg1388).Richard Smith2017-01-091-2/+2
| | | | | | | | | | | | This issue clarifies how deduction proceeds past a non-trailing function parameter pack. Essentially, the pack itself is skipped and consumes no arguments (except for those implied by an explicitly-specified template arguments), and nothing is deduced from it. As a small fix to the standard's rule, we do not allow subsequent deduction to change the length of the function parameter pack (by preventing extension of the explicitly-specified pack if present, and otherwise deducing all contained packs to empty packs). llvm-svn: 291425
* Revert r291410 and r291411.Richard Smith2017-01-091-1/+1
| | | | | | The test-suite bots are still failing even after r291410's fix. llvm-svn: 291412
* Implement C++ DR1391 (wg21.link/cwg1391)Richard Smith2017-01-091-1/+1
| | | | | | | | | | | | | Check for implicit conversion sequences for non-dependent function template parameters between deduction and substitution. The idea is to accept as many cases as possible, on the basis that substitution failure outside the immediate context is much more common during substitution than during implicit conversion sequence formation. This re-commits r290808, reverted in r290811, with a fix for handling of explicitly-specified template argument packs. llvm-svn: 291410
* Revert "DR1391: Check for implicit conversion sequences for non-dependent ↵Renato Golin2017-01-021-1/+1
| | | | | | | | | | | | | | function template parameters between deduction and substitution. The idea is to accept as many cases as possible, on the basis that substitution failure outside the immediate context is much more common during substitution than during implicit conversion sequence formation." This reverts commit r290808, as it broken all ARM and AArch64 test-suite test: MultiSource/UnitTests/C++11/frame_layout Also, please, next time, try to write a commit message in according to our guidelines: http://llvm.org/docs/DeveloperPolicy.html#commit-messages llvm-svn: 290811
* DR1391: Check for implicit conversion sequences for non-dependent functionRichard Smith2017-01-021-1/+1
| | | | | | | | | | | | template parameters between deduction and substitution. The idea is to accept as many cases as possible, on the basis that substitution failure outside the immediate context is much more common during substitution than during implicit conversion sequence formation. This does not implement the partial ordering portion of DR1391, which so far appears to be misguided. llvm-svn: 290808
* [c++17] Implement P0522R0 as written. This allows a template template argumentRichard Smith2016-12-311-3/+7
| | | | | | | | | | | | | | | | | | | to be specified for a template template parameter whenever the parameter is at least as specialized as the argument (when there's an obvious and correct mapping from uses of the parameter to uses of the argument). For example, a template with more parameters can be passed to a template template parameter with fewer, if those trailing parameters have default arguments. This is disabled by default, despite being a DR resolution, as it's fairly broken in its current state: there are no partial ordering rules to cope with template template parameters that have different parameter lists, meaning that code that attempts to decompose template-ids based on arity can hit unavoidable ambiguity issues. The diagnostics produced on a non-matching argument are also pretty bad right now, but I aim to improve them in a subsequent commit. llvm-svn: 290792
* DR1315: a non-type template argument in a partial specialization is permittedRichard Smith2016-12-281-1/+1
| | | | | | | | | | to make reference to template parameters. This is only a partial implementation; we retain the restriction that the argument must not be type-dependent, since it's unclear how that would work given the existence of other language rules requiring an exact type match in this context, even for type-dependent cases (a question has been raised on the core reflector). llvm-svn: 290647
* DR1495: A partial specialization is ill-formed if it is not (strictly) moreRichard Smith2016-12-271-2/+2
| | | | | | | | specialized than the primary template. (Put another way, if we imagine there were a partial specialization matching the primary template, we should never select it if some other partial specialization also matches.) llvm-svn: 290593
* [c++1z] cxx_status: mark p0195r2 as done.Richard Smith2016-12-191-1/+1
| | | | llvm-svn: 290081
* [c++1z] P0217R3: Allow by-value structured binding of arrays.Richard Smith2016-12-141-3/+1
| | | | llvm-svn: 289630
* Add tests for a couple more DRs.Richard Smith2016-12-092-4/+7
| | | | llvm-svn: 289258
* cxx_dr_status: update to latest issue list and add a couple more tests.Richard Smith2016-12-091-283/+793
| | | | llvm-svn: 289255
* [c++1z] P0003R5: Removing dynamic exception specifications.Richard Smith2016-12-081-1/+1
| | | | | | | | | | | | | | | | | | We continue to support dynamic exception specifications in C++1z as an extension, but produce an error-by-default warning when we encounter one. This allows users to opt back into the feature with a warning flag, and implicitly opts system headers back into the feature should they happen to use it. There is one semantic change implied by P0003R5 but not implemented here: violating a throw() exception specification should now call std::terminate directly instead of calling std::unexpected(), but since P0003R5 also removes std::unexpected() and std::set_unexpected, and the default unexpected handler calls std::terminate(), a conforming C++1z program cannot tell that we are still calling it. The upside of this strategy is perfect backwards compatibility; the downside is that we don't get the more efficient 'noexcept' codegen for 'throw()'. llvm-svn: 289019
* [c++17] P0135R1: Guaranteed copy elision.Richard Smith2016-12-062-2/+2
| | | | | | | | When an object of class type is initialized from a prvalue of the same type (ignoring cv qualifications), use the prvalue to initialize the object directly instead of inserting a redundant elidable call to a copy constructor. llvm-svn: 288866
* DR1213: element access on an array xvalue or prvalue produces an xvalue. In theRichard Smith2016-12-051-1/+1
| | | | | | | | | | | | | | latter case, a temporary array object is materialized, and can be lifetime-extended by binding a reference to the member access. Likewise, in an array-to-pointer decay, an rvalue array is materialized before being converted into a pointer. This caused IR generation to stop treating file-scope array compound literals as having static storage duration in some cases in C++; that has been rectified by modeling such a compound literal as an lvalue. This also improves clang's compatibility with GCC for those cases. llvm-svn: 288654
* DR616, and part of P0135R1: member access (or pointer-to-member access) on aRichard Smith2016-12-031-4/+4
| | | | | | | temporary produces an xvalue, not a prvalue. Support this by materializing the temporary prior to performing the member access. llvm-svn: 288563
* P0012R1: add Itanium ABI support for throwing non-noexcept function pointers ↵Richard Smith2016-12-011-3/+1
| | | | | | and catching as noexcept. llvm-svn: 288305
* Revert r285664, cxx-abi-dev chose to go in a different direction for the ABI ↵Richard Smith2016-12-011-13/+7
| | | | | | here. llvm-svn: 288304
* [www] Fix spelling error in checker release notes.Devin Coughlin2016-11-161-1/+1
| | | | llvm-svn: 287105
* [www] Update analyzer website for release of checker-279Devin Coughlin2016-11-163-2/+21
| | | | llvm-svn: 287063
* PR23281: Fix implementation of DR1891 to implement the intent: that is, aRichard Smith2016-11-161-1/+1
| | | | | | lambda-expression does not have a move-assignment operator. llvm-svn: 287057
* Add instructions in clang get_started page about working with a monorepoMehdi Amini2016-11-121-0/+2
| | | | llvm-svn: 286696
* [c++1z] std::byte didn't make itRichard Smith2016-11-121-7/+0
| | | | llvm-svn: 286685
* [c++1z] Two more features have been accepted.Richard Smith2016-11-111-1/+1
| | | | llvm-svn: 286681
* [c++1z] p0522 is approved.Richard Smith2016-11-111-2/+5
| | | | llvm-svn: 286679
* [cxx_status] Prepare features list for WG21 motions.Richard Smith2016-11-111-2/+25
| | | | llvm-svn: 286660
* [www] Update the link to the 'include what you use' projectAlex Lorenz2016-11-071-1/+1
| | | | llvm-svn: 286121
* [www] Fix a typo on the analyzer websiteAlex Lorenz2016-11-011-1/+1
| | | | llvm-svn: 285686
* Implement ABI proposal for throwing noexcept function pointers, per discussionRichard Smith2016-11-011-7/+13
| | | | | | | | on cxx-abi-dev (thread starting 2016-10-11). This is currently hidden behind a cc1-only -m flag, pending discussion of how best to deal with language changes that require use of new symbols from the ABI library. llvm-svn: 285664
* [cxx_status] update commentRichard Smith2016-10-261-1/+1
| | | | llvm-svn: 285154
* Mark P0012R1 as "Partial" since it's now substantially complete.Richard Smith2016-10-221-1/+5
| | | | llvm-svn: 284907
* [c++1z] P0012R1: Implement a few remaining pieces: downgrade diagnostic forRichard Smith2016-10-222-2/+8
| | | | | | | | | | | | | | mismatched dynamic exception specifications in expressions from an error to a warning, since this is no longer ill-formed in C++1z. Allow reference binding of a reference-to-non-noexcept function to a noexcept function lvalue. As defect resolutions, also allow a conditional between noexcept and non-noexcept function lvalues to produce a non-noexcept function lvalue (rather than decaying to a function pointer), and allow function template argument deduction to deduce a reference to non-noexcept function when binding to a noexcept function type. llvm-svn: 284905
* DR583, DR1512: Implement a rewrite to C++'s 'composite pointer type' rules.Richard Smith2016-10-211-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | This has two significant effects: 1) Direct relational comparisons between null pointer constants (0 and nullopt) and pointers are now ill-formed. This was always the case for C, and it appears that C++ only ever permitted by accident. For instance, cases like nullptr < &a are now rejected. 2) Comparisons and conditional operators between differently-cv-qualified pointer types now work, and produce a composite type that both source pointer types can convert to (when possible). For instance, comparison between 'int **' and 'const int **' is now valid, and uses an intermediate type of 'const int *const *'. Clang previously supported #2 as an extension. We do not accept the cases in #1 as an extension. I've tested a fair amount of code to check that this doesn't break it, but if it turns out that someone is relying on this, we can easily add it back as an extension. This is a re-commit of r284800. llvm-svn: 284890
OpenPOWER on IntegriCloud