[clang] a94e560 - Only emit -Wmicrosoft-goto in C++ mode (#138507)

via cfe-commits cfe-commits at lists.llvm.org
Mon May 5 04:40:34 PDT 2025


Author: Hans Wennborg
Date: 2025-05-05T13:40:31+02:00
New Revision: a94e56095808f4784afcf8e50819ba594c5e8219

URL: https://github.com/llvm/llvm-project/commit/a94e56095808f4784afcf8e50819ba594c5e8219
DIFF: https://github.com/llvm/llvm-project/commit/a94e56095808f4784afcf8e50819ba594c5e8219.diff

LOG: Only emit -Wmicrosoft-goto in C++ mode (#138507)

Follow-up to #138009 which added diagnostics for "jump past
initialization" in C mode, in which case they're not an MS extension.

Added: 
    

Modified: 
    clang/lib/Sema/JumpDiagnostics.cpp
    clang/test/Sema/warn-jump-bypasses-init.c

Removed: 
    


################################################################################
diff  --git a/clang/lib/Sema/JumpDiagnostics.cpp b/clang/lib/Sema/JumpDiagnostics.cpp
index 6d71b26801107..a852a950b47f4 100644
--- a/clang/lib/Sema/JumpDiagnostics.cpp
+++ b/clang/lib/Sema/JumpDiagnostics.cpp
@@ -998,7 +998,8 @@ void JumpScopeChecker::CheckJump(Stmt *From, Stmt *To, SourceLocation DiagLoc,
   SmallVector<unsigned, 10> ToScopesError;
   SmallVector<unsigned, 10> ToScopesWarning;
   for (unsigned I = ToScope; I != CommonScope; I = Scopes[I].ParentScope) {
-    if (S.getLangOpts().MSVCCompat && JumpDiagWarning != 0 &&
+    if (S.getLangOpts().MSVCCompat && S.getLangOpts().CPlusPlus &&
+        JumpDiagWarning != 0 &&
         IsMicrosoftJumpWarning(JumpDiagError, Scopes[I].InDiag))
       ToScopesWarning.push_back(I);
     else if (IsCXX98CompatWarning(S, Scopes[I].InDiag) ||

diff  --git a/clang/test/Sema/warn-jump-bypasses-init.c b/clang/test/Sema/warn-jump-bypasses-init.c
index b2ff3ae02fe23..5d7639bdf78d0 100644
--- a/clang/test/Sema/warn-jump-bypasses-init.c
+++ b/clang/test/Sema/warn-jump-bypasses-init.c
@@ -1,6 +1,7 @@
 // RUN: %clang_cc1 -fsyntax-only -verify=c,both -Wjump-misses-init %s
 // RUN: %clang_cc1 -fsyntax-only -verify=c,both -Wc++-compat %s
 // RUN: %clang_cc1 -fsyntax-only -verify=good %s
+// RUN: %clang_cc1 -fsyntax-only -verify=good -fms-compatibility %s
 // RUN: %clang_cc1 -fsyntax-only -verify=cxx,both -x c++ %s
 // good-no-diagnostics
 


        


More information about the cfe-commits mailing list