[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Tinycc-devel] TinyCC -std=c2x support?
From: |
Christian Jullien |
Subject: |
Re: [Tinycc-devel] TinyCC -std=c2x support? |
Date: |
Fri, 18 Jun 2021 13:20:37 +0200 |
Hi Elijah,
I'm not a maintainer but as far as I see, I vote a big YES for your patch.
-----Original Message-----
From: Tinycc-devel [mailto:tinycc-devel-bounces+eligis=orange.fr@nongnu.org]
On Behalf Of Elijah Stone
Sent: Friday, June 18, 2021 12:24
To: tinycc-devel@nongnu.org
Subject: Re: [Tinycc-devel] TinyCC -std=c2x support?
On Fri, 18 Jun 2021, Christian Jullien wrote:
> C evolves and supports new features over the time.
>
> Do we want to support upcoming features like prototypes without
> parameters (as in C++)?
I think it would be a good idea. As far as I can tell, the current c2x
draft (http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2596.pdf) entails
the following compiler changes:
+ void f(int) {} (N2480)
+ single-argument _Static_assert (N2265) (already implemented) get rid
+ of k&r definitions (N2432)
+ also: void foo(){} is equivalent to void foo(void){}. The meaning of
void foo() (just a prototype) is unchanged + allow labels to precede
declarations (e.g. lb: int x;) (N2508) + 'true' and 'false' have type
bool (N2393)
- use of booleans in arithmetic expressions is 'deprecated'; consider
emiting warnings?
+ support binary literals (N2549, already supported as a gnu ext.
Actually as a 'tcc ext', but it's a gnu ext)
- u8'x' -> (unsigned char)'x' (N2418)
- u8"", U"" et al (from c11) are already not supported, need to add them
- mixed-type literal concatenation is now illegal (u"" U"" is an error;
"" u"" is fine though. See above) (N2594)
- Change rules about conversions of pointers to qualified arrays (N2607)
- [[attributes]] (N2335)
I've attached a patch implementing the changes marked '+'. Currently
they're all guarded behind -std=c2x, but perhaps that should be limited to
the backwards-incompatible ones?
-E