summaryrefslogtreecommitdiff
path: root/clang/www
Commit message (Collapse)AuthorAgeFilesLines
* [Clang][NFC] Present language version in descending publication dateCorentin Jabot2023-05-161-864/+868
|
* Add C++26 compile flags.Erich Keane2023-05-152-1/+25
| | | | | | | | Now that we've updated to C++23, we need to add C++26/C++2c command line flags, as discussed in https://discourse.llvm.org/t/rfc-lets-just-call-it-c-26-and-forget-about-the-c-2c-business-at-least-internally/70383 Differential Revision: https://reviews.llvm.org/D150450
* [clang] Fix typos in documentationKazu Hirata2023-05-121-1/+1
|
* [Sema] Lambdas are not part of immediate context for deductionIlya Biryukov2023-05-091-5/+1
| | | | | | | | | | | | | | | This commit implements [temp.deduct]p9. Test updates include: - New notes in `cxx1y-init-captures.cpp`, `lambda-expressions.cpp` and 'warn-unused-lambda-capture.cpp'. This seems to be caused by diagnosing errors earlier (during deduction) that were previously surfaced later (during instantiation). - New error `lambda-unevaluated.cpp` is in line with [temp.deduct]p9. Reviewed By: erichkeane, #clang-language-wg Differential Revision: https://reviews.llvm.org/D148802
* [Clang] Updating handling of defaulted comparison operators to reflect ↵Shafik Yaghmour2023-05-041-1/+8
| | | | | | | | | | | | | | | | changes from P2448R2 Prior to P2448R2 we were more aggressive in diagnosing ill-formed constexpr functions. Many of these restrictions were relaxed and now it is not required for defaulted comparison operators to call constexpr functions. This behavior is extended to before C++23 and diagnostic for it's use can be enabled w/ -pedantic or -Wc++2b-default-comp-relaxed-constexpr This fixes: https://github.com/llvm/llvm-project/issues/61238 Differential Revision: https://reviews.llvm.org/D146090
* [clang] Use -std=c++23 instead of -std=c++2bMark de Wever2023-05-042-8/+8
| | | | | | | | | | | | | | During the ISO C++ Committee meeting plenary session the C++23 Standard has been voted as technical complete. This updates the reference to c++2b to c++23 and updates the __cplusplus macro. Drive-by fixes c++1z -> c++17 and c++2a -> c++20 when seen. Reviewed By: aaron.ballman Differential Revision: https://reviews.llvm.org/D149553
* Add the experiemental interpreter to the open project pageAaron Ballman2023-05-041-1/+12
| | | | This also fixes a missing close li tag as a drive-by
* [C2x] Update 'nullptr' implementation based on CD commentsAaron Ballman2023-05-031-7/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We filed some CD ballot comments which WG14 considered during the ballot comment resolution meetings in Jan and Feb 2023, and this updates our implementation based on the decisions reached. Those decisions were (paraphrased for brevity): US 9-034 (REJECTED) allow (void *)nullptr to be a null pointer constant US 10-035 (ACCEPTED) accept the following code, as in C++: void func(nullptr_t); func(0); US 22-058 (REJECTED) accept the following code, as in C++: nullptr_t val; (void)(1 ? val : 0); (void)(1 ? nullptr : 0); US 23-062 (REJECTED) reject the following code, as in C++: nullptr_t val; bool b1 = val; bool b2 = nullptr; US 24-061 (ACCEPTED) accept the following code, as in C++: nullptr_t val; val = 0; US 21-068 (ACCEPTED) accept the following code, as in C++: (nullptr_t)nullptr; GB-071 (ACCEPTED) accept the following code, as in C++: nullptr_t val; (void)(val == nullptr); This patch updates the implementation as appropriate, but is primarily focused around US 10-035, US 24-061, and US 23-062 in terms of functional changes. Differential Revision: https://reviews.llvm.org/D148800
* [Clang][Doc] Added an open project for improving command line docsShivam Gupta2023-04-281-0/+2
| | | | | | | | | | | There seems to be a lot of documentation is missing for different command line flags uses. This create confusion with same looking options, better to document clearly their uses. Reviewed By: aaron.ballman Differential Revision: https://reviews.llvm.org/D149405
* [Clang] Add tests and mark as implemented WG14-N2728Tom Honermann2023-04-271-1/+1
| | | | | | | | | | This change expands testing of UTF-8, UTF-16, and UTF-32 character and string literals as validation that WG14 N2728 (char16_t & char32_t string literals shall be UTF-16 & UTF-32) has been implemented. Reviewed By: cor3ntin, aaron.ballman Differential Revision: https://reviews.llvm.org/D149098
* [clang] Add test for CWG1821Vlad Serebrennikov2023-04-251-1/+1
| | | | | | | | | [[https://wg21.link/p1787 | P1787]]: My clarification in [[ http://lists.isocpp.org/core/2019/06/6614.php | “Where can namespace-scope functions and variables be redeclared?” ]] is applied, resolving CWG1821. Wording: (If the declaration is not a friend declaration:) If the id-expression in a declarator-id is a qualified-id Q, let S be its lookup context; the declaration shall inhabit a namespace scope. ([dcl.meaning]/1) Reviewed By: shafik, #clang-language-wg Differential Revision: https://reviews.llvm.org/D149003
* Add missing HTML closing tagAaron Ballman2023-04-241-1/+1
| | | | The </li> tag was missing for this entry.
* Remove the "implement better version of existing tools" open projectAaron Ballman2023-04-241-15/+0
| | | | | | This project doesn't really relate to improving Clang itself and it contained stale suggestions like working on code modification functionality in clang-format.
* Reword the open project for generating documentationAaron Ballman2023-04-241-8/+6
| | | | | Work already began on this project, so this updates the wording to discuss clang-doc specifically.
* Add some more open project for ClangAaron Ballman2023-04-241-10/+35
| | | | | This adds open projects for updating the status of our C conformance, DR conformance for both C and C++, and improving build times.
* Add some open projects for people to considerAaron Ballman2023-04-241-1/+42
| | | | | These projects are ones that are already known within the community as areas we would like to see improvements on.
* Remove known-stale projects from the open projects pageAaron Ballman2023-04-242-121/+5
| | | | | | | | | | | | | | | | | | | | | This removes or modifies: Undefined behavior checking -- we've got UBSan and it's well-known enough that we don't need to call it out specifically as a need. Improve target support -- this is largely already complete. Use clang libraries to extend Ragel with a JIT -- this wasn't really related to improving Clang. C++1y feature work -- now talks about C++20, C++2b, and C2x instead. Universal driver -- the bug report linked to by the UniversalDriver web page has been closed since 2017. XML representation of the AST -- we removed this functionality in 2013 and replaced it with a JSON representation a few years later. That is a best-effort project.
* Minor cleanup of the Open Projects pageAaron Ballman2023-04-241-9/+12
| | | | | Sets the charset to UTF-8, fixes the page title, replaces mention of cfe-dev with Discourse, points out Discord and IRC.
* [clang] Mark CWG2009 as N/AVlad Serebrennikov2023-04-241-1/+1
| | | | | | | | | [[https://wg21.link/p1787 | P1787]]: CWG2331 is resolved by defining lookup from complete-class contexts and out-of-line member definitions. The rest of CWG2009 is resolved by making it ill-formed NDR for forward lookup outside a complete-class context to change the results (before overload resolution, to avoid differences in instantiation). Wording: The result of the search is the declaration set of S(N, T). If it is an invalid set, the program is ill-formed. If it differs from the result of a search in T for N from immediately after the class-specifier of T, the program is ill-formed, no diagnostic required. ([class.member.lookup]/7) Reviewed By: #clang-language-wg, shafik Differential Revision: https://reviews.llvm.org/D148263
* [clang] Mark CWG2331 as N/AVlad Serebrennikov2023-04-151-1/+1
| | | | | | | | | [[https://wg21.link/p1787 | P1787]]: CWG2331 is resolved by defining lookup from complete-class contexts and out-of-line member definitions. Wording: The declaration set is the result of a single search in the scope of C for N from immediately after the class-specifier of C if P is in a complete-class context of C or from P otherwise. ([class.member.lookup]/4) Reviewed By: #clang-language-wg, shafik Differential Revision: https://reviews.llvm.org/D148260
* [clang] Add test for CWG1894 and CWG2199Vlad Serebrennikov2023-04-141-2/+2
| | | | | | | | | | | [[https://wg21.link/p1787 | P1787]]: CWG1894 and its duplicate CWG2199 are resolved per Richard’s proposal for [[ https://listarchives.isocpp.org/cgi-bin/wg21/message?wg=core&msg=28415 | “dr407 still leaves open questions about typedef / tag hiding” ]], using generic conflicting-declaration rules even for typedef, and discarding a redundant typedef-name when looking up an elaborated-type-specifier. Wording: See changes to [dcl.typedef], [basic.lookup.elab], and [basic.lookup]/4. Generic conflicting-declaration rules are specified in changes to [basic.scope.scope]. [[ https://cplusplus.github.io/CWG/issues/407.html | CWG407]], [[ https://cplusplus.github.io/CWG/issues/1894.html | CWG1894 ]], and [[ https://cplusplus.github.io/CWG/issues/2199.html | CWG2199 ]] discuss how elaborated type specifiers interact with typedefs, using directives, and using declarations. Since existing test for CWG407 covers examples provided in CWG1894 and CWG2199, and does it in accordance with P1787, I reused parts of it. Reviewed By: #clang-language-wg, cor3ntin Differential Revision: https://reviews.llvm.org/D148136
* [clang][NFC] Use a different service for CWG issue linksVlad Serebrennikov2023-04-132-2672/+2672
| | | | We've been using https://wg21.link for C++ DR status page, but it forwards non-resolved issues to EDG wiki, which is not useful for general public. This patch replace it with https://cplusplus.github.io/CWG/issues/ .
* [clang] Make make_cxx_dr_status script runnable from anywhereVlad Serebrennikov2023-04-121-3/+4
| | | | | | | | This script has hardcoded relative paths to `clang/test/CXX/drs`, `cwg_index.html`, and `cxx_dr_status.html`, which requires running it with `clang/www` CWD. This patch makes those paths relative to path of the script itself, so that it could be run from anywhere. Reviewed By: #clang-language-wg, cor3ntin Differential Revision: https://reviews.llvm.org/D148146
* [clang] Implement CWG 2397Younan Zhang2023-04-121-1/+1
| | | | | | | | | | | This patch implements CWG 2397, allowing array of placeholder type to be valid. See also https://wg21.cmeerw.net/cwg/issue2397. Reviewed By: aaron.ballman, #clang-language-wg Differential Revision: https://reviews.llvm.org/D147909
* [clang] Add test for CWG1837Vlad Serebrennikov2023-04-111-1/+1
| | | | | | | | | [[https://wg21.link/p1787 | P1787]]: CWG1837 is resolved by restricting `this` to referring to the innermost enclosing class. Wording: see changes to [expr.prim.this] and [expr.prim.lambda]. Reviewed By: #clang-language-wg, erichkeane Differential Revision: https://reviews.llvm.org/D148035
* [clang] Add test for CWG2007Vlad Serebrennikov2023-04-111-1/+1
| | | | | | | | | [[https://wg21.link/p1787 | P1787]]: CWG2007 is resolved by skipping unqualified lookup for operators that must be member functions. Wording: For the operators =, [], or ->, the set of non-member candidates is empty; otherwise, it includes the result of the unqualified lookup for operator@... ([over.match.oper]/3) Reviewed By: #clang-language-wg, shafik Differential Revision: https://reviews.llvm.org/D147839
* [clang] Add test for CWG2370Vlad Serebrennikov2023-04-111-1/+1
| | | | | | | | | | | [[https://wg21.link/p1787 | P1787]]: CWG2370 is resolved by performing a search in (only) the immediate scope of any friend, per the [[ http://wiki.edg.com/bin/view/Wg21sandiego2018/CoreWorkingGroup#Core_issue_2370_friend_declarati | CWG opinion from San Diego ]]. Wording: In a friend declaration declarator whose declarator-id is a qualified-id whose lookup context is a class or namespace S, lookup for an unqualified name that appears after the declarator-id performs a search in the scope associated with S. If that lookup finds nothing, it undergoes unqualified name lookup. ([basic.lookup.unqual]/6). Clarification for P1787 description: when applied to the test in this patch, "immediate scope" refers to `N`, and "(only)" refers to the fact that `type` is not searched in parent scope of `N`. See example after the wording if additional clarification is needed. The most relevant line there is `friend void A::f(F); // OK`. Reviewed By: #clang-language-wg, shafik Differential Revision: https://reviews.llvm.org/D147848
* [clang] Add test for CWG1822Vlad Serebrennikov2023-04-111-1/+1
| | | | | | | | | [[https://wg21.link/p1787 | P1787]]: CWG1822 is resolved by specifying that the body of a lambda remains in the surrounding (function parameter) scope. Wording: A parameter-declaration-clause P introduces a function parameter scope that includes P. <...> If P is associated with a lambda-declarator, its scope extends to the end of the compound-statement in the lambda-expression. ([basic.scope.param]) Reviewed By: #clang-language-wg, shafik Differential Revision: https://reviews.llvm.org/D147836
* [clang] Mark CWG536 as N/AVlad Serebrennikov2023-04-101-1/+1
| | | | | | | | | [[https://wg21.link/p1787 | P1787]]: CWG536 (long partially resolved) is resolved by specifying that unqualified lookup occurs for any kind of unqualified-id as an id-expression. Wording: An unqualified name is a name that <...>. Unless otherwise specified, such a name undergoes unqualified name lookup from the point where it appears. ([basic.lookup.unqual]/4) Reviewed By: #clang-language-wg, aaron.ballman Differential Revision: https://reviews.llvm.org/D147564
* [clang] Add test for CWG607Vlad Serebrennikov2023-04-071-1/+1
| | | | | | | | | [[https://wg21.link/p1787 | P1787]]: CWG607 is resolved by looking up unqualified names in a mem-initializer-id from outside the parameter scope. Wording: Lookup for an unqualified name in a mem-initializer-id ignores the constructor’s function parameter scope. ([class.base.init]/2) Reviewed By: #clang-language-wg, shafik Differential Revision: https://reviews.llvm.org/D147590
* [clang] Mark CWG562 as N/AVlad Serebrennikov2023-04-071-1/+1
| | | | | | | | | [[https://wg21.link/p1787 | P1787]]: CWG562 is resolved by defining lookup as occurring from a program point. Wording: A single search in a scope S for a name N from a program point P finds all declarations that precede P to which any name that is the same as N ([basic.pre]) is bound in S. ([basic.lookup]/2) Reviewed By: #clang-language-wg, cor3ntin, shafik Differential Revision: https://reviews.llvm.org/D147554
* [clang] Add test for CWG255Vlad Serebrennikov2023-04-071-1/+1
| | | | | | | | | [[https://wg21.link/p1787 | P1787]]: CWG255 (partially resolved by N3778 is resolved by generally specifying the restriction to usual deallocation functions. Wording: In any case, any declarations other than of usual deallocation functions ([basic.stc.dynamic.deallocation]) are discarded. ([expr.delete]/9) Reviewed By: #clang-language-wg, cor3ntin Differential Revision: https://reviews.llvm.org/D147549
* [clang] Add test for CWG191Vlad Serebrennikov2023-04-071-2/+2
| | | | | | | | | | | Also mark CWG1200 as "na." [[https://wg21.link/p1787 | P1787]]: CWG191 and CWG1200 are resolved by defining unqualified lookup in terms of every enclosing scope. Wording: If no declarations are found, the results of the unqualified search are the results of an unqualified search in the parent scope of S, if any, from P. ([basic.lookup.unqual]/2) Reviewed By: #clang-language-wg, shafik Differential Revision: https://reviews.llvm.org/D147530
* [Clang] Fix markup in cxx_statusCorentin Jabot2023-04-071-3/+3
| | | | | | | | | | | This reverts the changes to cxx_status introduced by https://reviews.llvm.org/D146178, as it did break the html markup While This PR resolves a bug related to concepts, it doesn't seem useful to change the advertised implementation of that paper many years after the fact, especially as the paper encompasses many issue resolution.
* [Clang][Sema] Fix comparison of constraint expressionsAlexander Shaposhnikov2023-04-041-3/+3
| | | | | | | | | | | | | | | This diff switches the approach to comparison of constraint expressions to the new one based on template args substitution. It continues the effort to fix our handling of out-of-line definitions of constrained templates. The associated GitHub issue: https://github.com/llvm/llvm-project/issues/61414 Test plan: 1/ ninja check-all 2/ bootstrapped Clang passes tests Differential revision: https://reviews.llvm.org/D146178
* Update Clang 16 statusesAaron Ballman2023-04-031-6/+6
| | | | Updates the C status tracking page for the recent release.
* [C2x] Implement support for empty brace initialization (WG14 N2900 and WG14 ↵Aaron Ballman2023-04-031-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | N3011) This implements support for allowing {} to consistently zero initialize objects. We already supported most of this work as a GNU extension, but the C2x feature goes beyond what the GNU extension allowed. The changes in this patch are: * Removed the -Wgnu-empty-initializer warning group. The extension is now a C2x extension warning instead. Note that use of `-Wno-gnu-empty-initializer seems` to be quite low in the wild (https://sourcegraph.com/search?q=context%3Aglobal+-file%3A.*test.*+%22-Wno-gnu-empty-initializer%22&patternType=standard&sm=1&groupBy=repo which currently only gives 8 hits total), so this is not expected to be an overly disruptive change. But I'm adding the clang vendors review group just in case this expectation is wrong. * Reworded the diagnostic wording to be about a C2x extension, added a pre-C2x compat warning. * Allow {} to zero initialize a VLA This functionality is exposed as an extension in all older C modes (same as the GNU extension was), but does *not* allow the extension for VLA initialization in C++ due to concern about handling non-trivially constructible types. Differential Revision: https://reviews.llvm.org/D147349
* [Doc][Clang] Update information about default standard versionRoy Jacobson2023-03-291-3/+3
|
* [Doc][Clang] Update Clang 16 from 'unreleased' to 'full'Roy Jacobson2023-03-291-12/+12
|
* [Clang] Update DR status page to reflect Core Issues List 111.Corentin Jabot2023-03-251-158/+494
|
* [docs] Update the status for coroutinesChuanqi Xu2023-03-211-4/+2
| | | | | | | | | | | | According to the discussion in https://discourse.llvm.org/t/rfc-could-we-mark-coroutines-as-unreleased-now/69220 We should mark coroutines as "it’s supported fully everywhere but on Windows targets". Reviewed By: aaron.ballman Differential Revision: https://reviews.llvm.org/D146187
* Roll back claims that we implement P0960R3 and P1975R0Aaron Ballman2023-03-171-1/+1
| | | | | | | | | | | We thought we had implemented these papers appropriately but have since discovered significant issues. See discussion of the issues at: https://github.com/llvm/llvm-project/issues/61145 The work already done on these papers is remaining in tree for the moment while people investigate whether the issues can be fixed forward in main. The status page is being updated so the status is clear to users of the upcoming Clang 16 release.
* [C2x] Add test coverage for WG14 N2607Aaron Ballman2023-03-081-1/+9
| | | | | | | | | This adds test coverage for N2607, which makes arrays and their elements identically qualified. Clang already implements much of the functionality from this paper, but is still missing some support. It also adds some details to the C status page so users have this information as well.
* Update the C status page for WG14 N2844Aaron Ballman2023-03-071-1/+1
| | | | | | | | | | The proposal is about the behavior of the _Float16, _Float32, and _Float64 types and whether they undergo default argument promotions (they don't). Clang doesn't yet support TS 18661 or the parts that made it into C2x, so we don't implement this paper.
* [C2x] Claim support for WG14 N2838Aaron Ballman2023-03-031-1/+1
| | | | | | This paper clarifies that complete object types need to be smaller than SIZE_MAX. We already conformed to that requirement, so this adds some test coverage to prove it.
* [C2x] Add tests for WG14 N3035 and update the C status pageAaron Ballman2023-03-021-1/+1
| | | | | | The paper was making minor corrections to the standard that Clang had already implemented. This adds (most of) the test coverage for the paper and claims support. In my testing, we supported this in Clang 15.
* [Clang] Implement Change scope of lambda trailing-return-typeCorentin Jabot2023-03-021-1/+1
| | | | | | | | | | This implements P2036R3 and P2579R0. That is, explicit, int, and implicit capture become visible at the start of the parameter head. Reviewed By: aaron.ballman, rupprecht, shafik Differential Revision: https://reviews.llvm.org/D124351
* [Clang] Implement CWG2518 - static_assert(false)Corentin Jabot2023-02-281-1/+1
| | | | | | | | | | | | | | | | | | | | This allows `static_assert(false)` to not be ill-formed in template definitions. This change is applied as a DR in all C++ modes. Of notes, a couple of tests were relying of the eager nature of static_assert * test/SemaTemplate/instantiation-dependence.cpp * test/SemaTemplate/instantiate-var-template.cpp I don't know if the changes to `static_assert` still allow that sort of tests to be expressed. Reviewed By: #clang-language-wg, erichkeane, aaron.ballman Differential Revision: https://reviews.llvm.org/D144285
* Remove WG14 N2829 from the C status page; NFCAaron Ballman2023-02-251-5/+0
| | | | | | This paper is about changes to the assert macro, but assert.h is not provided by the compiler, so there's no work for Clang to do to support this feature.
* [C2x] Implement support for revised spelling of keywordsAaron Ballman2023-02-251-1/+1
| | | | | | | | | | This implements WG14 N2934 (https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2934.pdf), which adds keywords for alignas, alignof, bool, static_assert, and thread_local in C, as aliases for _Alignas, _Alignof, _Bool, _Static_assert, and _Thread_local. We already supported the keywords in C2x mode, but this completes support by adding pre-C2x compat warnings and updates the stdalign.h header in freestanding mode.