summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJordan Rose <jordan_rose@apple.com>2012-06-20 21:09:10 +0000
committerJordan Rose <jordan_rose@apple.com>2012-06-20 21:09:10 +0000
commitdc753b625ff21ea2ea91747bb92ea8da29a0f340 (patch)
treec8800ea4e07589561f056541645b00c8dcfb0cd7
parent0187a05e35d244997b2f8b4578c33025d8d3b6db (diff)
downloadbcm5719-llvm-dc753b625ff21ea2ea91747bb92ea8da29a0f340.tar.gz
bcm5719-llvm-dc753b625ff21ea2ea91747bb92ea8da29a0f340.zip
Reword -Winternal-linkage-in-inline, and rename it to -Wstatic-in-inline.
Now that this is a C-only warning, we can use "static" instead of "internal linkage", which is a term developers are probably more familiar with. This makes for a better warning message. The warning name was changed to match, since "internal linkage" is not mentioned in the warning text anymore. llvm-svn: 158853
-rw-r--r--clang/include/clang/Basic/DiagnosticSemaKinds.td10
-rw-r--r--clang/test/Sema/inline.c18
2 files changed, 14 insertions, 14 deletions
diff --git a/clang/include/clang/Basic/DiagnosticSemaKinds.td b/clang/include/clang/Basic/DiagnosticSemaKinds.td
index 1e9069a7db9..1b26b7b1a74 100644
--- a/clang/include/clang/Basic/DiagnosticSemaKinds.td
+++ b/clang/include/clang/Basic/DiagnosticSemaKinds.td
@@ -3022,13 +3022,11 @@ def warn_undefined_internal : Warning<
def note_used_here : Note<"used here">;
def warn_internal_in_extern_inline : ExtWarn<
- "%select{function|variable}0 %1 has internal linkage but is used in an "
- "inline function with external linkage">,
- InGroup<DiagGroup<"internal-linkage-in-inline"> >;
+ "static %select{function|variable}0 %1 is used in an inline function with "
+ "external linkage">, InGroup<DiagGroup<"static-in-inline"> >;
def ext_internal_in_extern_inline : Extension<
- "%select{function|variable}0 %1 has internal linkage but is used in an "
- "inline function with external linkage">,
- InGroup<DiagGroup<"internal-linkage-in-inline"> >;
+ "static %select{function|variable}0 %1 is used in an inline function with "
+ "external linkage">, InGroup<DiagGroup<"static-in-inline"> >;
def note_convert_inline_to_static : Note<
"use 'static' to give inline function %0 internal linkage">;
def note_internal_decl_declared_here : Note<
diff --git a/clang/test/Sema/inline.c b/clang/test/Sema/inline.c
index 7f1815e467d..6c95a7a14b4 100644
--- a/clang/test/Sema/inline.c
+++ b/clang/test/Sema/inline.c
@@ -8,15 +8,17 @@
// Check the use of static variables in non-static inline functions.
static int staticVar; // expected-note + {{'staticVar' declared here}}
static int staticFunction(); // expected-note + {{'staticFunction' declared here}}
+static struct { int x; } staticStruct; // expected-note + {{'staticStruct' declared here}}
-inline int useStatic () { // expected-note 2 {{use 'static' to give inline function 'useStatic' internal linkage}}
- staticFunction(); // expected-warning{{function 'staticFunction' has internal linkage but is used in an inline function with external linkage}}
- return staticVar; // expected-warning{{variable 'staticVar' has internal linkage but is used in an inline function with external linkage}}
+inline int useStatic () { // expected-note 3 {{use 'static' to give inline function 'useStatic' internal linkage}}
+ staticFunction(); // expected-warning{{static function 'staticFunction' is used in an inline function with external linkage}}
+ (void)staticStruct.x; // expected-warning{{static variable 'staticStruct' is used in an inline function with external linkage}}
+ return staticVar; // expected-warning{{static variable 'staticVar' is used in an inline function with external linkage}}
}
extern inline int useStaticFromExtern () { // no suggestions
- staticFunction(); // expected-warning{{function 'staticFunction' has internal linkage but is used in an inline function with external linkage}}
- return staticVar; // expected-warning{{variable 'staticVar' has internal linkage but is used in an inline function with external linkage}}
+ staticFunction(); // expected-warning{{static function 'staticFunction' is used in an inline function with external linkage}}
+ return staticVar; // expected-warning{{static variable 'staticVar' is used in an inline function with external linkage}}
}
static inline int useStaticFromStatic () {
@@ -48,11 +50,11 @@ inline int useStaticMainFile () {
// Check that the warnings show up when explicitly requested.
#pragma clang diagnostic push
-#pragma clang diagnostic warning "-Winternal-linkage-in-inline"
+#pragma clang diagnostic warning "-Wstatic-in-inline"
inline int useStaticAgain () { // expected-note 2 {{use 'static' to give inline function 'useStaticAgain' internal linkage}}
- staticFunction(); // expected-warning{{function 'staticFunction' has internal linkage but is used in an inline function with external linkage}}
- return staticVar; // expected-warning{{variable 'staticVar' has internal linkage but is used in an inline function with external linkage}}
+ staticFunction(); // expected-warning{{static function 'staticFunction' is used in an inline function with external linkage}}
+ return staticVar; // expected-warning{{static variable 'staticVar' is used in an inline function with external linkage}}
}
#pragma clang diagnostic pop
OpenPOWER on IntegriCloud