Commit Graph

32 Commits

Author SHA1 Message Date
Evgeny Shulgin 510383626f [Clang] Support label at end of compound statement
Implements paper P2324R2
https://wg21.link/p2324r2
https://github.com/cplusplus/papers/issues/1006

Reviewed By: cor3ntin

Differential Revision: https://reviews.llvm.org/D133887
2022-09-17 15:34:56 +00:00
Aaron Ballman 843d074400 Update the C Status page for the Clang 15 release
Now that Clang 15 is out, we can swap all the unreleased entries over.
2022-09-13 09:36:54 -04:00
Aaron Ballman 0f28cf416d Correct the __has_c_attribute value for maybe_unused
The original proposal was adopted in Apr 2019, but was subsequently
updated by WG14 N2662 in June 2021. We already supported the attribute
on a label and it behaved as expected, but we had not bumped the
feature test value.
2022-09-13 09:33:20 -04:00
YingChi Long e3bd67eddf
[clang][Sema] check default argument promotions for printf
The main focus of this patch is to make ArgType::matchesType check for
possible default parameter promotions when the argType is not a pointer.
If so, no warning will be given for `int`, `unsigned int` types as
corresponding arguments to %hhd and %hd. However, the usage of %hhd
corresponding to short is relatively rare, and it is more likely to be a
misuse. This patch keeps the original behavior of clang like this as
much as possible, while making it more convenient to consider the
default arguments promotion.

Fixes https://github.com/llvm/llvm-project/issues/57102

Reviewed By: aaron.ballman, nickdesaulniers, #clang-language-wg

Differential Revision: https://reviews.llvm.org/D132568
2022-09-01 10:10:10 +08:00
Aaron Ballman e2ab6061a9 Add N2562 to the C status page
It was originally left off thinking the paper only impacts the C
standard library, but Clang supports diagnostics for incorrect use of
a format specifier, so this paper has some frontend impacts as well.
2022-08-22 09:46:12 -04:00
Aaron Ballman 74b5dad5e9 Add N2653 to the C2x status page
This was accidentally missing from the Feb 2022 paper section.
2022-08-17 11:30:31 -04:00
Aaron Ballman d7e06d5675 Update the status of some more C99 features
This also adds some test coverage to demonstrate we implement what was
standardized.
2022-08-17 08:11:56 -04:00
Aaron Ballman ba79c2a250 Update the implementation status of some C11 features
This also starts to add some test coverage for specific papers to
validate conformance against.
2022-08-13 10:17:47 -04:00
Aaron Ballman e640250454 Update the C status page from the latest working draft
WG14 N3047 is the last C working draft before the document goes out
for committee ballot, so this should be the last of the C2x compiler
features to be added.
2022-08-08 11:30:49 -04:00
Corentin Jabot e82880e6b8 [Clang] Update the status of N2393 in c_status.html 2022-07-23 15:15:12 +02:00
Corentin Jabot aee76cb59c [Clang] Add support for Unicode identifiers (UAX31) in C2x mode.
This implements
N2836 Identifier Syntax using Unicode Standard Annex 31.

The feature was already implemented for C++,
and the semantics are the same.

Unlike C++ there was, afaict, no decision to
backport the feature in older languages mode,
so C17 and earlier are not modified and the
code point tables for these language modes are conserved.

Reviewed By: aaron.ballman

Differential Revision: https://reviews.llvm.org/D130416
2022-07-23 14:08:08 +02:00
Aaron Ballman f0a6a57330 Switch links to use https consistently
The WG14 website was recently updated to support SSL, and we might as
well make use of that.
2022-06-08 15:53:55 -04:00
Aaron Ballman b685426970 Add missing entries for Annex F and Annex H to the C status page 2022-06-08 15:53:54 -04:00
Aaron Ballman 98d4f0651a Correcting some links in the C status page
The paper titles were correct, but the document number and links were
incorrect (typo'ed numbers).
2022-06-08 08:52:31 -04:00
Aaron Ballman bf21cda7f2 Add the 2022 papers to the C status tracking page
This adds the papers from Feb 2022 (parts 1 and 2) and May 2022.
2022-06-08 07:42:39 -04:00
Aaron Ballman d46e7aecb4 Update the C2x status page from latest working draft
This adds the papers for the Jun, Sep, and Dec 2021 meetings. 2022
papers will be handled in a follow-up.
2022-06-07 15:53:47 -04:00
Aaron Ballman ade5b55af5 Add a page to track C defect report status
We currently have a page for tracking defects against the C++ standard,
but we don't have the same information for the C standard. This starts
us down the path of being able to track that in a way our users can see.

There are *a lot* of entries marked as "Unknown". As we validate
Clang's behavior for a given DR by adding a test case for it, we can
slowly begin to improve this page over time.

This page is now linked from the existing C status page, which was
updated slightly as a result of these changes as well.

Note, unlike with the C++ defect report page, this content is not auto-
generated from a source document and is not automatically updated from
test comments. It may be worthwhile to automate the updates based on
our test coverage, but that can happen later.
2022-05-20 16:07:48 -04:00
Aaron Ballman 9955f14aaf [C2x] Disallow functions without prototypes/functions with identifier lists
WG14 has elected to remove support for K&R C functions in C2x. The
feature was introduced into C89 already deprecated, so after this long
of a deprecation period, the committee has made an empty parameter list
mean the same thing in C as it means in C++: the function accepts no
arguments exactly as if the function were written with (void) as the
parameter list.

This patch implements WG14 N2841 No function declarators without
prototypes (http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2841.htm)
and WG14 N2432 Remove support for function definitions with identifier
lists (http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2432.pdf).

It also adds The -fno-knr-functions command line option to opt into
this behavior in other language modes.

Differential Revision: https://reviews.llvm.org/D123955
2022-04-20 13:28:15 -04:00
Timm Bäder 33ec653055 [clang][lexer] Allow u8 character literal prefixes in C2x
Implement N2418 for C2x.

Differential Revision: https://reviews.llvm.org/D119221
2022-04-19 09:57:51 +02:00
Aaron Ballman b26466d001 Update the C and C++ status pages now that Clang 14 is out 2022-03-23 07:59:52 -04:00
Aaron Ballman bf7d9970ba Support the *_WIDTH macros in limits.h and stdint.h
This completes the implementation of
WG14 N2412 (http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2412.pdf),
which standardizes C on a twos complement representation for integer
types. The only work that remained there was to define the correct
macros in the standard headers, which this patch does.
2022-01-13 11:46:34 -05:00
Chuanqi Xu bbce75e352 Update Bug report URL to Github Issues
Although we moved to Github Issues. The bug report message refers to
Bugzilla still. This patch tries to update these URLs.

Reviewed By: MaskRay, Quuxplusone, jhenderson, libunwind, libc++

Differential Revision: https://reviews.llvm.org/D116351
2022-01-06 17:33:25 +08:00
Aaron Ballman 1feb8ab0d3 Update the status of N2412 in C (we do not implement large parts of it) 2021-12-06 13:14:13 -05:00
Aaron Ballman 408075ec6a Add the papers that were applied to the latest C2x working draft 2021-10-21 13:38:57 -04:00
Aaron Ballman cfca2ae1f5 Update the C++ and C status pages now that Clang 13 has been released 2021-10-21 12:13:19 -04:00
Aaron Ballman fe16d331d3 Add document numbers for the C99 status page.
This doesn't add all of the document numbers, but it adds a bunch of
them. Not all of the documents are available on the committee page
(they're old enough that they come from a time when the mailing was
comprised of physical pieces of paper), so some of the documents listed
are assumed to be correct based on my reading of editor's reports.
2021-09-22 13:02:25 -04:00
Aaron Ballman 101c3de39f Add information about C99 to the C status page. 2021-09-17 13:49:17 -04:00
Aaron Ballman dc3bd11e5b Adding the rest of the C11 papers to the status page. 2021-06-15 16:13:26 -04:00
Aaron Ballman 69cfa178b7 Clearly specify that these are partially implemented features 2021-06-15 07:28:29 -04:00
Aaron Ballman 00dbf8c832 Adding some of the documents for C11.
This is not the complete set of language-related documents for C11, but
is about 75% complete.
2021-06-14 16:43:44 -04:00
Aaron Ballman 82a3b606b0 Update the C status page somewhat.
This adds implementation information for N2607,
clarifies that C17 only resolved defect reports,
and adds -std= information for the different versions.
2021-06-11 12:06:50 -04:00
Aaron Ballman 3a7a774941 Add a page to track the status of C proposals in Clang. 2021-06-10 12:00:52 -04:00