================
@@ -0,0 +1,46 @@
+// RUN: %clang_cc1 -verify -fsyntax-only %s
+
+// C11 6.2.2p7: same identifier with both internal and external linkage is UB.
+
+// Conflicting linkage (UB)
+
+static int x; // expected-note {{previous}}
+void test_basic_shadow(void) {
+ int x;
+ { extern int x; } // expected-error {{declared with both internal and
external linkage}}
+}
+
+static int y; // expected-note {{previous}}
+void test_deep_nesting(void) {
+ int y;
+ { int y; { { extern int y; } } } // expected-error {{declared with both
internal and external linkage}}
+}
+
+static int p; // expected-note {{previous}}
+void test_param_shadow(int p) {
+ { extern int p; } // expected-error {{declared with both internal and
external linkage}}
+}
+
+static int z;
+void test_chained_shadow(void) {
+ extern int z; // expected-note {{previous}} #2: internal linkage
----------------
Endilll wrote:
```suggestion
extern int z; // expected-note {{previous}}
```
`#2` made sense in my example, but doesn't make any sense here.
https://github.com/llvm/llvm-project/pull/193567
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits