[clang] [Clang] Diagnose require_explicit_initialization for C tentative definitions (PR #234210)
Pathri Vidya Praveen via cfe-commits
cfe-commits at lists.llvm.org
Thu Oct 22 06:57:06 PDT 2026
================
@@ -0,0 +1,37 @@
+// RUN: %clang_cc1 -std=c17 -fsyntax-only -Wuninitialized-explicit-init -verify %s
+// RUN: %clang_cc1 -std=c23 -fsyntax-only -Wuninitialized-explicit-init -verify %s
+
+struct ops {
+ int (*show)(void) __attribute__((require_explicit_initialization)); // #SHOW
+ int flags;
+};
+
+struct plain {
+ int a;
+};
+
+struct plain no_attribute; // no warning: no field requires explicit initialization
+
+struct ops never_completed; // expected-warning {{field in 'ops' requires explicit initialization but is not explicitly initialized}} expected-note@#SHOW {{'show' declared here}}
+static struct ops never_completed_static; // expected-warning {{field in 'ops' requires explicit initialization but is not explicitly initialized}} expected-note@#SHOW {{'show' declared here}}
+
+struct ops repeated;
+struct ops repeated; // expected-warning {{field in 'ops' requires explicit initialization but is not explicitly initialized}} expected-note@#SHOW {{'show' declared here}}
+
+struct ops completed_later;
+struct ops completed_later = { .flags=1}; // expected-warning {{field 'show' requires explicit initialization but is not explicitly initialized}} expected-note@#SHOW {{'show' declared here}}
+
+struct ops completed_ok;
+struct ops completed_ok = { .show=0};
+
+extern struct ops ext;
+
+struct late g_late; // expected-warning {{field in 'late' requires explicit initialization but is not explicitly initialized}} expected-note@#LATE_X {{'x' declared here}}
+struct late {
+ int x __attribute__((require_explicit_initialization)); // #LATE_X
+};
+
+void f(void){
+ static struct ops local_static; // expected-warning {{field in 'ops' requires explicit initialization but is not explicitly initialized}} expected-note@#SHOW {{'show' declared here}}
+ (void)&local_static;
+}
----------------
PathriVidyaPraveen wrote:
Done, thanks!
https://github.com/llvm/llvm-project/pull/234210
More information about the cfe-commits
mailing list