diff --git a/lldb/test/API/lang/cpp/gmodules/templates/TestGModules.py b/lldb/test/API/lang/cpp/gmodules/templates/TestGModules.py
--- a/lldb/test/API/lang/cpp/gmodules/templates/TestGModules.py
+++ b/lldb/test/API/lang/cpp/gmodules/templates/TestGModules.py
@@ -2,5 +2,5 @@
 from lldbsuite.test.decorators import *
 
 lldbinline.MakeInlineTest(__file__, globals(), [
-    expectedFailureAll(oslist=["linux"], bugnumber="llvm.org/pr36107",
-        debug_info="gmodules")])
+    expectedFailureAll(oslist=["linux"], bugnumber="llvm.org/pr36107"),
+    add_test_categories(["gmodules"])])
diff --git a/lldb/test/API/lang/objc/modules-app-update/TestClangModulesAppUpdate.py b/lldb/test/API/lang/objc/modules-app-update/TestClangModulesAppUpdate.py
--- a/lldb/test/API/lang/objc/modules-app-update/TestClangModulesAppUpdate.py
+++ b/lldb/test/API/lang/objc/modules-app-update/TestClangModulesAppUpdate.py
@@ -10,7 +10,7 @@
 
 class TestClangModuleAppUpdate(TestBase):
 
-    @skipIf(debug_info=no_match(["gmodules"]))
+    @add_test_categories(["gmodules"])
     def test_rebuild_app_modules_untouched(self):
         with open(self.getBuildArtifact("module.modulemap"), "w") as f:
             f.write("""
diff --git a/lldb/test/API/lang/objc/modules-hash-mismatch/TestClangModulesHashMismatch.py b/lldb/test/API/lang/objc/modules-hash-mismatch/TestClangModulesHashMismatch.py
--- a/lldb/test/API/lang/objc/modules-hash-mismatch/TestClangModulesHashMismatch.py
+++ b/lldb/test/API/lang/objc/modules-hash-mismatch/TestClangModulesHashMismatch.py
@@ -10,7 +10,7 @@
 
 class TestClangModuleHashMismatch(TestBase):
 
-    @skipIf(debug_info=no_match(["gmodules"]))
+    @add_test_categories(["gmodules"])
     def test_expr(self):
         with open(self.getBuildArtifact("module.modulemap"), "w") as f:
             f.write("""
diff --git a/lldb/test/API/lang/objc/modules-incomplete/TestIncompleteModules.py b/lldb/test/API/lang/objc/modules-incomplete/TestIncompleteModules.py
--- a/lldb/test/API/lang/objc/modules-incomplete/TestIncompleteModules.py
+++ b/lldb/test/API/lang/objc/modules-incomplete/TestIncompleteModules.py
@@ -15,7 +15,7 @@
         # Find the line number to break inside main().
         self.line = line_number('main.m', '// Set breakpoint 0 here.')
 
-    @skipIf(debug_info=no_match(["gmodules"]))
+    @add_test_categories(["gmodules"])
     def test_expr(self):
         self.build()
         exe = self.getBuildArtifact("a.out")
diff --git a/lldb/test/API/lang/objc/modules-inline-functions/TestModulesInlineFunctions.py b/lldb/test/API/lang/objc/modules-inline-functions/TestModulesInlineFunctions.py
--- a/lldb/test/API/lang/objc/modules-inline-functions/TestModulesInlineFunctions.py
+++ b/lldb/test/API/lang/objc/modules-inline-functions/TestModulesInlineFunctions.py
@@ -11,7 +11,8 @@
 
 class ModulesInlineFunctionsTestCase(TestBase):
 
-    @skipIf(macos_version=["<", "10.12"], debug_info=no_match(["gmodules"]))
+    @add_test_categories(["gmodules"])
+    @skipIf(macos_version=["<", "10.12"])
     def test_expr(self):
         self.build()
         exe = self.getBuildArtifact("a.out")
diff --git a/lldb/test/API/lang/objc/modules-update/TestClangModulesUpdate.py b/lldb/test/API/lang/objc/modules-update/TestClangModulesUpdate.py
--- a/lldb/test/API/lang/objc/modules-update/TestClangModulesUpdate.py
+++ b/lldb/test/API/lang/objc/modules-update/TestClangModulesUpdate.py
@@ -10,7 +10,7 @@
 
 class TestClangModuleUpdate(TestBase):
 
-    @skipIf(debug_info=no_match(["gmodules"]))
+    @add_test_categories(["gmodules"])
     @skipIfDarwin # rdar://76540904
     def test_expr(self):
         with open(self.getBuildArtifact("module.modulemap"), "w") as f:
diff --git a/lldb/test/API/lang/objc/objc-struct-argument/TestObjCStructArgument.py b/lldb/test/API/lang/objc/objc-struct-argument/TestObjCStructArgument.py
--- a/lldb/test/API/lang/objc/objc-struct-argument/TestObjCStructArgument.py
+++ b/lldb/test/API/lang/objc/objc-struct-argument/TestObjCStructArgument.py
@@ -18,8 +18,9 @@
         self.break_line = line_number(
             self.main_source, '// Set breakpoint here.')
 
-    @add_test_categories(['pyapi'])
-    @skipIf(debug_info=no_match(["gmodules"]), oslist=['ios', 'watchos', 'tvos', 'bridgeos'], archs=['armv7', 'arm64'])  # this test program only builds for ios with -gmodules
+    # this test program only builds for ios with -gmodules
+    @add_test_categories(['gmodules', 'pyapi'])
+    @skipIf(oslist=['ios', 'watchos', 'tvos', 'bridgeos'], archs=['armv7', 'arm64'])
     def test_with_python_api(self):
         """Test passing structs to Objective-C methods."""
         self.build()