aboutsummaryrefslogtreecommitdiff
path: root/gcc/c
diff options
context:
space:
mode:
authorFlorian Weimer <fweimer@redhat.com>2023-12-01 08:10:13 +0100
committerFlorian Weimer <fweimer@redhat.com>2023-12-01 08:10:13 +0100
commit4ecfa6c4a9df19b364cbdf6d9de5f0b98c22bd8f (patch)
tree82fe02902283e386b142cbc9fa298202921f9b63 /gcc/c
parent3ae8882e70ad3c33b7a27a8e521dca6c1d434f74 (diff)
downloadgcc-4ecfa6c4a9df19b364cbdf6d9de5f0b98c22bd8f.zip
gcc-4ecfa6c4a9df19b364cbdf6d9de5f0b98c22bd8f.tar.gz
gcc-4ecfa6c4a9df19b364cbdf6d9de5f0b98c22bd8f.tar.bz2
c: Turn -Wreturn-mismatch into a permerror
gcc/ * doc/invoke.texi (Warning Options): Document that -Wreturn-mismatch is a permerror in C99 and later. gcc/c/ PR c/96284 * c-typeck.cc (c_finish_return): Use permerrors for OPT_Wreturn_mismatch diagnostics. gcc/testsuite/ * gcc.dg/permerror-default.c (return_mismatch_1) (return_mismatch_2): Expect new permerror. * gcc.dg/permerror-gnu89-nopermissive.c (return_mismatch_1): Likewise. * gcc.dg/permerror-system.c: Likewise. * gcc.dg/20030906-1.c: Compile with -fpermissive due to expected -Wreturn-mismatch error. * gcc.dg/20030906-1a.c: New test. Copied from gcc.dg/20030906-1.c. Expect the error. * gcc.dg/20030906-2.c: Compile with -fpermissive due to expected -Wreturn-mismatch error. * gcc.dg/20030906-2a.c: New test. Copied from gcc.dg/20030906-2.c. Expect the error. * gcc.dg/Wreturn-mismatch-1.c: Compile with -fpermissive due to expected -Wreturn-mismatch error. * gcc.dg/Wreturn-mismatch-1a.c: New test. Copied from gcc.dg/Wreturn-mismatch-1.c. Expect the error. * gcc.dg/Wreturn-mismatch-2.c: Compile with -fpermissive due to expected -Wreturn-mismatch error. * gcc.dg/Wreturn-mismatch-2a.c: New test. Copied from gcc.dg/Wreturn-mismatch-2.c. Expect the error. * gcc.dg/diagnostic-range-bad-return.c: Compile with -fpermissive due to expected -Wreturn-mismatch error. * gcc.dg/diagnostic-range-bad-return-2.c: New test. Copied from gcc.dg/diagnostic-range-bad-return.c. Expect the error. * gcc.dg/pr105635-2.c: Expect -Wreturn-mismatch error. * gcc.dg/pr23075.c: Build with -fpermissive due to expected -Wreturn-mismatch error. * gcc.dg/pr23075-2.c: New test. Copied from gcc.dg/pr23075.c. Expect the error. * gcc.dg/pr29521.c: Compile with -fpermissive due to expected -Wreturn-mismatch error. * gcc.dg/pr29521-a.c: New test. Copied from gcc.dg/pr29521.c. Expect error. * gcc.dg/pr67730.c: Compile with -fpermissive due to expected -Wreturn-mismatch error. * gcc.dg/pr67730-a.c: New test. Copied from gcc.dg/pr67730-a.c. Expect error. * gcc.target/powerpc/conditional-return.c: Compile with -fpermissive due to expected -Wreturn-mismatch error.
Diffstat (limited to 'gcc/c')
-rw-r--r--gcc/c/c-typeck.cc4
1 files changed, 2 insertions, 2 deletions
diff --git a/gcc/c/c-typeck.cc b/gcc/c/c-typeck.cc
index b309300..b03532a 100644
--- a/gcc/c/c-typeck.cc
+++ b/gcc/c/c-typeck.cc
@@ -11234,7 +11234,7 @@ c_finish_return (location_t loc, tree retval, tree origtype)
&& valtype != NULL_TREE && TREE_CODE (valtype) != VOID_TYPE)
{
no_warning = true;
- if (emit_diagnostic (flag_isoc99 ? DK_PEDWARN : DK_WARNING,
+ if (emit_diagnostic (flag_isoc99 ? DK_PERMERROR : DK_WARNING,
loc, OPT_Wreturn_mismatch,
"%<return%> with no value,"
" in function returning non-void"))
@@ -11247,7 +11247,7 @@ c_finish_return (location_t loc, tree retval, tree origtype)
current_function_returns_null = 1;
bool warned_here;
if (TREE_CODE (TREE_TYPE (retval)) != VOID_TYPE)
- warned_here = pedwarn
+ warned_here = permerror_opt
(xloc, OPT_Wreturn_mismatch,
"%<return%> with a value, in function returning void");
else