https://github.com/ccrownhill updated https://github.com/llvm/llvm-project/pull/98016
>From 5dd2bb12dee26ba93d927ad1cd99fa610f9ace97 Mon Sep 17 00:00:00 2001 From: ccrownhill <ckronbich...@proton.me> Date: Mon, 8 Jul 2024 11:42:37 +0100 Subject: [PATCH 1/3] fix bug that undefined internal is a warning only for -pedantic-errors --- clang/include/clang/Basic/DiagnosticSemaKinds.td | 2 +- clang/test/Sema/undefined_internal.c | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 clang/test/Sema/undefined_internal.c diff --git a/clang/include/clang/Basic/DiagnosticSemaKinds.td b/clang/include/clang/Basic/DiagnosticSemaKinds.td index 44fd51ec9abc9..ae3dbedd01693 100644 --- a/clang/include/clang/Basic/DiagnosticSemaKinds.td +++ b/clang/include/clang/Basic/DiagnosticSemaKinds.td @@ -6013,7 +6013,7 @@ def note_deleted_assign_field : Note< "because field %2 is of %select{reference|const-qualified}4 type %3">; // These should be errors. -def warn_undefined_internal : Warning< +def warn_undefined_internal : ExtWarn< "%select{function|variable}0 %q1 has internal linkage but is not defined">, InGroup<DiagGroup<"undefined-internal">>; def err_undefined_internal_type : Error< diff --git a/clang/test/Sema/undefined_internal.c b/clang/test/Sema/undefined_internal.c new file mode 100644 index 0000000000000..1b6c3a4b76e05 --- /dev/null +++ b/clang/test/Sema/undefined_internal.c @@ -0,0 +1,11 @@ +// RUN: %clang_cc1 -fsyntax-only -verify %s -pedantic-errors + +static void f(void); // expected-error {{function 'f' has internal linkage but is not defined}} + +int main(void) +{ + f; + // expected-note@-1 {{used here}} + // expected-warning@-2 {{expression result unused}} +} + >From 9e679ac9c2c669b595d361516b7e499e0b0457ba Mon Sep 17 00:00:00 2001 From: ccrownhill <ckronbich...@proton.me> Date: Wed, 10 Jul 2024 12:06:28 +0100 Subject: [PATCH 2/3] add to change of undefined_internal to error for -pedantic-errors to release notes --- clang/docs/ReleaseNotes.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst index 838cb69f647ee..a4146aeee25de 100644 --- a/clang/docs/ReleaseNotes.rst +++ b/clang/docs/ReleaseNotes.rst @@ -554,6 +554,9 @@ Attribute Changes in Clang Improvements to Clang's diagnostics ----------------------------------- +- Clang now emits an error instead of a warning for `undefined_internal` + when compiling with `-pedantic-errors` to conform to the C standard + - Clang now applies syntax highlighting to the code snippets it prints. >From b553d87a675cac5d60df2b1fdc586d6b7af6b687 Mon Sep 17 00:00:00 2001 From: ccrownhill <ckronbich...@proton.me> Date: Wed, 10 Jul 2024 19:04:17 +0200 Subject: [PATCH 3/3] add more tests for undefined internals --- ...undefined_internal.c => undefined-internal-basic.c} | 0 clang/test/Sema/undefined-internal-generic-selection.c | 10 ++++++++++ clang/test/Sema/undefined-internal-sizeof.c | 10 ++++++++++ clang/test/Sema/undefined-internal-typeof.c | 10 ++++++++++ 4 files changed, 30 insertions(+) rename clang/test/Sema/{undefined_internal.c => undefined-internal-basic.c} (100%) create mode 100644 clang/test/Sema/undefined-internal-generic-selection.c create mode 100644 clang/test/Sema/undefined-internal-sizeof.c create mode 100644 clang/test/Sema/undefined-internal-typeof.c diff --git a/clang/test/Sema/undefined_internal.c b/clang/test/Sema/undefined-internal-basic.c similarity index 100% rename from clang/test/Sema/undefined_internal.c rename to clang/test/Sema/undefined-internal-basic.c diff --git a/clang/test/Sema/undefined-internal-generic-selection.c b/clang/test/Sema/undefined-internal-generic-selection.c new file mode 100644 index 0000000000000..0a2b4b61e68e7 --- /dev/null +++ b/clang/test/Sema/undefined-internal-generic-selection.c @@ -0,0 +1,10 @@ +// RUN: %clang_cc1 -fsyntax-only -verify %s -pedantic-errors + +// expected-no-diagnostics + +static int f(void); + +int main(void) +{ + int x = _Generic(f(), int: 10, short: 20); +} diff --git a/clang/test/Sema/undefined-internal-sizeof.c b/clang/test/Sema/undefined-internal-sizeof.c new file mode 100644 index 0000000000000..f609473b1341c --- /dev/null +++ b/clang/test/Sema/undefined-internal-sizeof.c @@ -0,0 +1,10 @@ +// RUN: %clang_cc1 -fsyntax-only -verify %s -pedantic-errors + +// expected-no-diagnostics + +static int f(void); + +int main(void) +{ + int x = sizeof f(); +} diff --git a/clang/test/Sema/undefined-internal-typeof.c b/clang/test/Sema/undefined-internal-typeof.c new file mode 100644 index 0000000000000..51c682ef7e942 --- /dev/null +++ b/clang/test/Sema/undefined-internal-typeof.c @@ -0,0 +1,10 @@ +// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c23 -pedantic-errors + +// expected-no-diagnostics + +static int f(void); + +int main(void) +{ + typeof(f()) x; +} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits