diff options
author | Aaron Ballman <aaron@aaronballman.com> | 2024-04-01 13:51:47 -0400 |
---|---|---|
committer | Aaron Ballman <aaron@aaronballman.com> | 2024-04-01 13:53:14 -0400 |
commit | 4746877c2716224dc87c69750bdd0df95b6d5b16 (patch) | |
tree | d25b848608495738521df7d8cfb3c91206a93e06 | |
parent | 2be722587f5987891ed8b2904a03f983e987f226 (diff) | |
download | llvm-4746877c2716224dc87c69750bdd0df95b6d5b16.zip llvm-4746877c2716224dc87c69750bdd0df95b6d5b16.tar.gz llvm-4746877c2716224dc87c69750bdd0df95b6d5b16.tar.bz2 |
[C99] Claim conformance to WG14 N570
-rw-r--r-- | clang/test/C/C99/n570.c | 31 | ||||
-rw-r--r-- | clang/www/c_status.html | 2 |
2 files changed, 32 insertions, 1 deletions
diff --git a/clang/test/C/C99/n570.c b/clang/test/C/C99/n570.c new file mode 100644 index 0000000..31c0922 --- /dev/null +++ b/clang/test/C/C99/n570.c @@ -0,0 +1,31 @@ +// RUN: %clang_cc1 -verify -std=c99 %s +// RUN: %clang_cc1 -E -std=c99 %s | FileCheck %s +// expected-no-diagnostics + +/* WG14 N570: Yes + * Empty macro arguments + * + * NB: the original paper is not available online anywhere, so the test + * coverage is coming from what could be gleaned from the C99 rationale + * document. In C89, it was UB to pass no arguments to a function-like macro, + * and that's now supported in C99. + */ + +#define TEN 10 +#define U u +#define I // expands into no preprocessing tokens +#define L L +#define glue(a, b) a ## b +#define xglue(a, b) glue(a, b) + +const unsigned u = xglue(TEN, U); +const int i = xglue(TEN, I); +const long l = xglue(TEN, L); + +// CHECK: const unsigned u = 10u; +// CHECK-NEXT: const int i = 10; +// CHECK-NEXT: const long l = 10L; + +_Static_assert(u == 10U, ""); +_Static_assert(i == 10, ""); +_Static_assert(l == 10L, ""); diff --git a/clang/www/c_status.html b/clang/www/c_status.html index 028234a..1238975 100644 --- a/clang/www/c_status.html +++ b/clang/www/c_status.html @@ -300,7 +300,7 @@ conformance.</p> <tr> <td>empty macro arguments</td> <td>N570</td> - <td class="unknown" align="center">Unknown</td> + <td class="full" align="center">Yes</td> </tr> <tr> <td>new structure type compatibility (tag compatibility)</td> |