Skip to content
Snippets Groups Projects
Commit 55e3bd37 authored by Joseph Myers's avatar Joseph Myers
Browse files

c: Default to -std=gnu23

Change the default language version for C compilation from -std=gnu17
to -std=gnu23.  A few tests are updated to remove local definitions of
bool, true and false (where making such an unconditional test change
seemed to make more sense than changing the test conditionally earlier
or building it with -std=gnu17); most test issues were already
addressed in previous patches.  In the case of
ctf-function-pointers-2.c, it was agreed in bug 117289 that it would
be OK to put -std=gnu17 in the test and leave more optimal BTF / CTF
output for this test as a potential future improvement.

Since the original test fixes, more such fixes have become necessary
and so are included in this patch.  More noinline attributes are added
to simulate-thread tests where () meaning a prototype affected test
results, while gcc.dg/torture/pr117496-1.c (a test declaring a
function with () then calling it with arguments) gets -std=gnu17
added.

Bootstrapped with no regressions for x86_64-pc-linux-gnu.

NOTE: it's likely there are target-specific tests for non-x86 targets
that need updating as a result of this change.  See commit
9fb5348e ("testsuite: Prepare for
-std=gnu23 default") for examples of changes to prepare the testsuite
to work with a -std=gnu23 default.  In most cases, adding
-Wno-old-style-definition (for warnings for old-style function
definitions) or -std=gnu17 (for other issues such as unprototyped
function declarations with ()) is appropriate, but watch out for cases
that indicate bugs with -std=gnu23 (in particular, any ICEs - there
was only the one nested function test where I had to fix an ICE on
x86_64).

gcc/
	* doc/invoke.texi (-std=gnu17, -std=gnu23): Document -std=gnu23 as
	default for C code.

gcc/c-family/
	* c-opts.cc (c_common_init_options): Default to C23.

gcc/testsuite/
	* c-c++-common/analyzer/asm-x86-dyndbg-2.c,
	c-c++-common/analyzer/asm-x86-lp64-2.c,
	c-c++-common/analyzer/attr-malloc-CVE-2019-19078-usb-leak.c,
	c-c++-common/analyzer/coreutils-cksum-pr108664.c,
	c-c++-common/analyzer/feasibility-3.c,
	c-c++-common/analyzer/pr105783.c, c-c++-common/analyzer/sock-1.c,
	c-c++-common/attributes-4.c, gcc.dg/Warray-bounds-78.c,
	gcc.dg/analyzer/asm-x86-dyndbg-1.c: Do not define bool, true or
	false.
	* gcc.dg/debug/ctf/ctf-function-pointers-2.c: Use -std-gnu17.
	* gcc.dg/gnu23-version-2.c: New test.
	* gcc.dg/simulate-thread/atomic-load-int.c,
	gcc.dg/simulate-thread/atomic-load-longlong.c,
	gcc.dg/simulate-thread/atomic-load-short.c: Add more noinline
	attributes.
	* gcc.dg/torture/pr117496-1.c: Use -std=gnu17.
parent f242f79b
No related branches found
No related tags found
No related merge requests found
Showing
with 30 additions and 40 deletions
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment