[clang] [SystemZ][Clang] Fix up clang lit tests to pass on z/OS or mark xfail/unsupported (PR #234370)
Sean Perry via cfe-commits
cfe-commits at lists.llvm.org
Wed Oct 21 13:57:09 PDT 2026
https://github.com/perry-ca created https://github.com/llvm/llvm-project/pull/234370
Applying fixes to test cases to get them working for z/OS. Common issues are:
- TLS support
- TLS isn't supported in the compiler yet. Update the tests to expect "not supported on target" errors
- trigraphs
- trigraphs are always enabled on z/OS. Mark the ones testing -fno-trigraphs as xfail.
- tests comparing IR files
- GOFF object files record the compilation time. That is passed in the IR.
- add source epoch option so time stamps are same in both IR files
>From 3c33eac036b0e146c3dc071e8fa68559da2f57ee Mon Sep 17 00:00:00 2001
From: Sean Perry <perry at ca.ibm.com>
Date: Tue, 20 Oct 2026 00:45:01 -0400
Subject: [PATCH 01/17] [SystemZ] Clean up clang lit tests for z/OS
---
clang/test/AST/ByteCode/command-line-options.cpp | 1 +
clang/test/Analysis/diagnostics/sarif-multi-diagnostic-test.c | 1 +
clang/test/Analysis/null-deref-path-notes.cpp | 1 +
clang/test/ClangScanDeps/logging-two-threads.c | 2 +-
clang/test/ClangScanDeps/module-format.c | 2 +-
clang/test/ClangScanDeps/modules-pch-compatibility.c | 1 +
clang/test/ClangScanDeps/modules-symlink.c | 2 +-
clang/test/ClangScanDeps/multiple-commands.c | 1 +
clang/test/ClangScanDeps/resource_directory.c | 1 +
clang/test/CodeGen/2007-04-14-FNoBuiltin.c | 1 +
clang/test/CodeGen/builtin-rename.c | 1 +
clang/test/CodeGen/libcalls-fno-builtin.c | 1 +
clang/test/CodeGen/nomathbuiltin.c | 1 +
clang/test/CodeGen/variable-array.c | 1 +
.../CodeGenHipStdPar/select-accelerator-code-pass-ordering.cpp | 1 +
clang/test/CoverageMapping/mcdc-error-conditions.cpp | 1 +
clang/test/Driver/crash-diagnostics-tar.c | 1 +
clang/test/Driver/experimental-library-flag.cpp | 2 +-
clang/test/Driver/no-objc-arr.m | 1 +
clang/test/ExtractAPI/invalid_utf8_doc_comment.c | 1 +
clang/test/Index/local-symbols.m | 1 +
clang/test/Index/preamble-reparse-changed-module.m | 1 +
clang/test/Index/record-completion-invocation.c | 1 +
clang/test/Index/record-parsing-invocation.c | 1 +
clang/test/InstallAPI/binary-attributes.test | 1 +
clang/test/InstallAPI/reexport-with-linker-symbols.test | 1 +
clang/test/InstallAPI/reexported-frameworks.test | 1 +
clang/test/Modules/DebugInfoSubmoduleImport.c | 2 +-
clang/test/Modules/DebugInfoSubmodules.c | 2 +-
clang/test/Modules/class-instantiate-no-change-02.cppm | 1 +
clang/test/Modules/class-instantiate-no-change.cppm | 1 +
clang/test/Modules/diagnostic-options-out-of-date.m | 1 +
clang/test/Modules/double-quotes.m | 1 +
clang/test/Modules/framework-public-includes-private.m | 1 +
clang/test/Modules/modules-reduced-bmi.cppm | 1 +
clang/test/Modules/no-external-type-id.cppm | 1 +
clang/test/Modules/no-transitive-decl-change-2.cppm | 1 +
clang/test/Modules/no-transitive-decl-change-4.cppm | 1 +
clang/test/Modules/no-transitive-decls-change.cppm | 1 +
clang/test/Modules/no-transitive-identifier-change.cppm | 1 +
clang/test/Modules/no-transitive-source-location-change-2.cppm | 1 +
clang/test/Modules/no-transitive-source-location-change.cppm | 1 +
clang/test/Modules/no-transitive-type-change.cppm | 1 +
.../test/Modules/prune-non-affecting-module-map-files-textual.c | 1 +
clang/test/Modules/prune-non-affecting-module-map-files.m | 1 +
clang/test/Modules/stress1.cpp | 1 +
clang/test/Parser/cxx2c-expansion-statements.cpp | 1 +
clang/test/Preprocessor/SOURCE_DATE_EPOCH.c | 1 +
clang/test/Sema/warn-unused-but-set-static-global.cpp | 1 +
clang/test/SemaCXX/cxx2a-nttp-printing.cpp | 1 +
clang/test/SemaCXX/thread-specifier.cpp | 1 +
clang/test/Tooling/clang-diff-ast.cpp | 1 +
clang/test/Tooling/clang-diff-basic.cpp | 1 +
clang/test/Tooling/clang-diff-html.test | 1 +
clang/test/Tooling/clang-diff-json.cpp | 1 +
55 files changed, 55 insertions(+), 6 deletions(-)
diff --git a/clang/test/AST/ByteCode/command-line-options.cpp b/clang/test/AST/ByteCode/command-line-options.cpp
index b64fc565e042ab..4c7a5021b80472 100644
--- a/clang/test/AST/ByteCode/command-line-options.cpp
+++ b/clang/test/AST/ByteCode/command-line-options.cpp
@@ -6,6 +6,7 @@
/// All this should be true if the driver is used or -cc1.
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: %clang -fsyntax-only -fexperimental-new-constant-interpreter %s -Xclang -verify=bc
// RUN: %clang -cc1 -fexperimental-new-constant-interpreter %s -verify=bc
diff --git a/clang/test/Analysis/diagnostics/sarif-multi-diagnostic-test.c b/clang/test/Analysis/diagnostics/sarif-multi-diagnostic-test.c
index 5842574793bce9..d0c088b03c51a9 100644
--- a/clang/test/Analysis/diagnostics/sarif-multi-diagnostic-test.c
+++ b/clang/test/Analysis/diagnostics/sarif-multi-diagnostic-test.c
@@ -1,3 +1,4 @@
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: rm -rf %t && mkdir %t && %clang_analyze_cc1 -analyzer-checker=core,optin.taint,debug.TaintTest,unix.Malloc %s -verify -analyzer-output=sarif-html -o %t%{fs-sep}out.sarif
// RUN: cat %t%{fs-sep}out.sarif | %normalize_sarif | diff -U1 -b %S/Inputs/expected-sarif/sarif-multi-diagnostic-test.c.sarif -
#include "../Inputs/system-header-simulator.h"
diff --git a/clang/test/Analysis/null-deref-path-notes.cpp b/clang/test/Analysis/null-deref-path-notes.cpp
index a37bbfe41a2c70..78b3315b8f35d5 100644
--- a/clang/test/Analysis/null-deref-path-notes.cpp
+++ b/clang/test/Analysis/null-deref-path-notes.cpp
@@ -1,3 +1,4 @@
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: %clang_analyze_cc1 -w -x c++ -analyzer-checker=core -analyzer-output=text -verify %s
namespace pr34731 {
diff --git a/clang/test/ClangScanDeps/logging-two-threads.c b/clang/test/ClangScanDeps/logging-two-threads.c
index e3173deaddcf65..df7d21272daa0f 100644
--- a/clang/test/ClangScanDeps/logging-two-threads.c
+++ b/clang/test/ClangScanDeps/logging-two-threads.c
@@ -1,7 +1,7 @@
// Test that when two threads are scanning two different TUs, we log an expected
// number of events, and for each pcm file, the sequence of events is expected.
-// UNSUPPORTED: system-windows
+// UNSUPPORTED: system-windows, target={{.*}}-zos{{.*}}
// RUN: rm -rf %t
// RUN: split-file %s %t
// RUN: sed -e "s|DIR|%/t|g" %t/cdb.json.template > %t/cdb.json
diff --git a/clang/test/ClangScanDeps/module-format.c b/clang/test/ClangScanDeps/module-format.c
index acfe195c4e080d..0028e1e765e2fd 100644
--- a/clang/test/ClangScanDeps/module-format.c
+++ b/clang/test/ClangScanDeps/module-format.c
@@ -4,7 +4,7 @@
// Unsupported on AIX because we don't support the requisite "__clangast"
// section in XCOFF yet.
-// UNSUPPORTED: target={{.*}}-aix{{.*}}
+// UNSUPPORTED: target={{.*}}-aix{{.*}}, target={{.*}}-zos{{.*}}
// RUN: rm -rf %t && mkdir %t
// RUN: cp %S/Inputs/modules-pch/* %t
diff --git a/clang/test/ClangScanDeps/modules-pch-compatibility.c b/clang/test/ClangScanDeps/modules-pch-compatibility.c
index 79d6ce24ce8bba..d300fa669c8411 100644
--- a/clang/test/ClangScanDeps/modules-pch-compatibility.c
+++ b/clang/test/ClangScanDeps/modules-pch-compatibility.c
@@ -1,3 +1,4 @@
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: rm -rf %t
// RUN: split-file %s %t
diff --git a/clang/test/ClangScanDeps/modules-symlink.c b/clang/test/ClangScanDeps/modules-symlink.c
index e4983bc6d0ccec..1edcc8f004b737 100644
--- a/clang/test/ClangScanDeps/modules-symlink.c
+++ b/clang/test/ClangScanDeps/modules-symlink.c
@@ -2,7 +2,7 @@
// RUN: split-file %s %t
// Unsupported on AIX because we don't support the requisite "__clangast"
// section in XCOFF yet.
-// UNSUPPORTED: system-windows, target={{.*}}-aix{{.*}}
+// UNSUPPORTED: system-windows, target={{.*}}-aix{{.*}}, target={{.*}}-zos{{.*}}
//--- cdb_pch.json
[
diff --git a/clang/test/ClangScanDeps/multiple-commands.c b/clang/test/ClangScanDeps/multiple-commands.c
index b53e871afe6366..84d4e3ad616dc8 100644
--- a/clang/test/ClangScanDeps/multiple-commands.c
+++ b/clang/test/ClangScanDeps/multiple-commands.c
@@ -5,6 +5,7 @@
// We use an x86_64-apple-darwin target to avoid host-dependent behaviour in
// the driver. Platforms without an integrated assembler have different commands
// REQUIRES: x86-registered-target
+// XFAIL: system-zos
// RUN: rm -rf %t
// RUN: split-file %s %t
diff --git a/clang/test/ClangScanDeps/resource_directory.c b/clang/test/ClangScanDeps/resource_directory.c
index 5c4b24f386de35..96ed4cd34f8f9c 100644
--- a/clang/test/ClangScanDeps/resource_directory.c
+++ b/clang/test/ClangScanDeps/resource_directory.c
@@ -1,5 +1,6 @@
// Path seperator differences
// UNSUPPORTED: system-windows
+// XFAIL: system-zos
// RUN: rm -rf %t && mkdir %t
// RUN: cp %S/Inputs/resource_directory/* %t
diff --git a/clang/test/CodeGen/2007-04-14-FNoBuiltin.c b/clang/test/CodeGen/2007-04-14-FNoBuiltin.c
index b95f41c52d27c6..936ea03e78b68e 100644
--- a/clang/test/CodeGen/2007-04-14-FNoBuiltin.c
+++ b/clang/test/CodeGen/2007-04-14-FNoBuiltin.c
@@ -1,3 +1,4 @@
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: %clang_cc1 -emit-llvm %s -O2 -fno-builtin -o - | FileCheck %s
// RUN: %clang_cc1 -emit-llvm %s -O2 -fno-builtin-printf -o - | FileCheck %s
// Check that -fno-builtin is honored.
diff --git a/clang/test/CodeGen/builtin-rename.c b/clang/test/CodeGen/builtin-rename.c
index 0092e54ef37d9b..54bdaed14b0cbd 100644
--- a/clang/test/CodeGen/builtin-rename.c
+++ b/clang/test/CodeGen/builtin-rename.c
@@ -1,3 +1,4 @@
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: %clang_cc1 %s -emit-llvm -o - | grep 'declare.*printf' | count 1
// PR3612
diff --git a/clang/test/CodeGen/libcalls-fno-builtin.c b/clang/test/CodeGen/libcalls-fno-builtin.c
index 6aef0efa1d9b7c..3e908d2f2eeded 100644
--- a/clang/test/CodeGen/libcalls-fno-builtin.c
+++ b/clang/test/CodeGen/libcalls-fno-builtin.c
@@ -1,3 +1,4 @@
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: %clang_cc1 -emit-llvm -fno-builtin -o - %s | FileCheck --check-prefixes=GLOBAL,CHECK %s
// RUN: %clang_cc1 -emit-llvm -fno-builtin-ceil -fno-builtin-copysign -fno-builtin-cos \
// RUN: -fno-builtin-fabs -fno-builtin-floor -fno-builtin-strcat -fno-builtin-strncat \
diff --git a/clang/test/CodeGen/nomathbuiltin.c b/clang/test/CodeGen/nomathbuiltin.c
index 35e7c567e68d27..d9a82c634bc1e4 100644
--- a/clang/test/CodeGen/nomathbuiltin.c
+++ b/clang/test/CodeGen/nomathbuiltin.c
@@ -1,3 +1,4 @@
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: %clang_cc1 -fno-math-builtin -emit-llvm -o - %s | FileCheck %s
// Check that the -fno-math-builtin option for -cc1 is working properly.
diff --git a/clang/test/CodeGen/variable-array.c b/clang/test/CodeGen/variable-array.c
index c2a7c2ffb93f47..7d9229bcbdc5e8 100644
--- a/clang/test/CodeGen/variable-array.c
+++ b/clang/test/CodeGen/variable-array.c
@@ -1,3 +1,4 @@
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: %clang_cc1 -emit-llvm < %s | grep puts | count 4
int puts(const char *);
diff --git a/clang/test/CodeGenHipStdPar/select-accelerator-code-pass-ordering.cpp b/clang/test/CodeGenHipStdPar/select-accelerator-code-pass-ordering.cpp
index a44267196eeedc..83340d0a3a4e2b 100644
--- a/clang/test/CodeGenHipStdPar/select-accelerator-code-pass-ordering.cpp
+++ b/clang/test/CodeGenHipStdPar/select-accelerator-code-pass-ordering.cpp
@@ -1,4 +1,5 @@
// REQUIRES: amdgpu-registered-target
+// XFAIL: target={{.*}}-zos{{.*}}
// Test that the accelerator code selection pass only gets invoked after linking
// Ensure Pass HipStdParAcceleratorCodeSelectionPass is not invoked in PreLink.
diff --git a/clang/test/CoverageMapping/mcdc-error-conditions.cpp b/clang/test/CoverageMapping/mcdc-error-conditions.cpp
index 8f5d6bd66897c9..a551b4188e2a44 100644
--- a/clang/test/CoverageMapping/mcdc-error-conditions.cpp
+++ b/clang/test/CoverageMapping/mcdc-error-conditions.cpp
@@ -1,3 +1,4 @@
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: %clang_cc1 -triple %itanium_abi_triple -std=c++11 -fcoverage-mcdc -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only %s 2>&1| FileCheck %s --check-prefixes=CHECK,COND7,TV
// RUN: %clang_cc1 -fmcdc-max-test-vectors=8 -triple %itanium_abi_triple -std=c++11 -fcoverage-mcdc -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only %s 2>&1| FileCheck %s --check-prefixes=CHECK,COND7,TV
diff --git a/clang/test/Driver/crash-diagnostics-tar.c b/clang/test/Driver/crash-diagnostics-tar.c
index 931c3524ed1558..97ec95f3e1a71f 100644
--- a/clang/test/Driver/crash-diagnostics-tar.c
+++ b/clang/test/Driver/crash-diagnostics-tar.c
@@ -1,4 +1,5 @@
// REQUIRES: backtrace
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: export LSAN_OPTIONS=detect_leaks=0
// RUN: rm -rf %t && mkdir %t
// RUN: cd %t
diff --git a/clang/test/Driver/experimental-library-flag.cpp b/clang/test/Driver/experimental-library-flag.cpp
index 62b007516897e4..40f3b32e942303 100644
--- a/clang/test/Driver/experimental-library-flag.cpp
+++ b/clang/test/Driver/experimental-library-flag.cpp
@@ -3,7 +3,7 @@
// XFAIL: target={{.*-windows-msvc.*}}, target={{.*-(ps4|ps5)}}
// For some reason, this fails with a core dump on AIX. This needs to be investigated.
-// UNSUPPORTED: target={{.*}}-aix{{.*}}
+// UNSUPPORTED: target={{.*}}-aix{{.*}}, target={{.*}}-zos{{.*}}
// RUN: %clangxx -fexperimental-library -stdlib=libc++ -### %s 2>&1 | FileCheck --check-prefixes=CHECK,CHECK-LIBCXX %s
// RUN: %clangxx -fexperimental-library -stdlib=libstdc++ -### %s 2>&1 | FileCheck --check-prefixes=CHECK,CHECK-LIBSTDCXX %s
diff --git a/clang/test/Driver/no-objc-arr.m b/clang/test/Driver/no-objc-arr.m
index deaf6b9e00ad1d..a5f523e1b42096 100644
--- a/clang/test/Driver/no-objc-arr.m
+++ b/clang/test/Driver/no-objc-arr.m
@@ -1,3 +1,4 @@
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: %clang -Werror -fobjc-arc -fsyntax-only -fno-objc-arc -Xclang -verify %s
// expected-no-diagnostics
diff --git a/clang/test/ExtractAPI/invalid_utf8_doc_comment.c b/clang/test/ExtractAPI/invalid_utf8_doc_comment.c
index f3f09ea9cbb56f..0bfa355fa82b1e 100644
--- a/clang/test/ExtractAPI/invalid_utf8_doc_comment.c
+++ b/clang/test/ExtractAPI/invalid_utf8_doc_comment.c
@@ -1,3 +1,4 @@
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: rm -rf %t
// RUN: %clang_cc1 -extract-api --pretty-sgf -verify \
// RUN: -triple arm64-apple-macosx -x c-header %s -o %t/output.symbols.json
diff --git a/clang/test/Index/local-symbols.m b/clang/test/Index/local-symbols.m
index bc74e75919bea2..a644b8c9a507ce 100644
--- a/clang/test/Index/local-symbols.m
+++ b/clang/test/Index/local-symbols.m
@@ -1,3 +1,4 @@
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: c-index-test -test-load-source local %s | FileCheck %s
// The method 'bar' was also being reported outside the @implementation
diff --git a/clang/test/Index/preamble-reparse-changed-module.m b/clang/test/Index/preamble-reparse-changed-module.m
index 88e837afe6b0ae..02e9c0c71be515 100644
--- a/clang/test/Index/preamble-reparse-changed-module.m
+++ b/clang/test/Index/preamble-reparse-changed-module.m
@@ -1,4 +1,5 @@
// UNSUPPORTED: system-windows
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: rm -rf %t
// RUN: mkdir -p %t/mod
diff --git a/clang/test/Index/record-completion-invocation.c b/clang/test/Index/record-completion-invocation.c
index 4b667134fa2d4a..40dc09dc25109b 100644
--- a/clang/test/Index/record-completion-invocation.c
+++ b/clang/test/Index/record-completion-invocation.c
@@ -1,3 +1,4 @@
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: export LSAN_OPTIONS=detect_leaks=0
// RUN: rm -rf %t
// RUN: mkdir %t
diff --git a/clang/test/Index/record-parsing-invocation.c b/clang/test/Index/record-parsing-invocation.c
index e0c4cdb05fb005..96ccfadadb868c 100644
--- a/clang/test/Index/record-parsing-invocation.c
+++ b/clang/test/Index/record-parsing-invocation.c
@@ -1,3 +1,4 @@
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: export LSAN_OPTIONS=detect_leaks=0
// RUN: rm -rf %t
// RUN: mkdir %t
diff --git a/clang/test/InstallAPI/binary-attributes.test b/clang/test/InstallAPI/binary-attributes.test
index fe107199c1d05a..e79e5acd89c3fe 100644
--- a/clang/test/InstallAPI/binary-attributes.test
+++ b/clang/test/InstallAPI/binary-attributes.test
@@ -1,3 +1,4 @@
+; XFAIL: target={{.*}}-zos{{.*}}
; RUN: rm -rf %t
; RUN: split-file %s %t
; RUN: mkdir -p %t/System/Library/Frameworks
diff --git a/clang/test/InstallAPI/reexport-with-linker-symbols.test b/clang/test/InstallAPI/reexport-with-linker-symbols.test
index ab7ac65af82e26..2dcb2faed9a77e 100644
--- a/clang/test/InstallAPI/reexport-with-linker-symbols.test
+++ b/clang/test/InstallAPI/reexport-with-linker-symbols.test
@@ -1,3 +1,4 @@
+; XFAIL: target={{.*}}-zos{{.*}}
; RUN: rm -rf %t
; RUN: split-file %s %t
diff --git a/clang/test/InstallAPI/reexported-frameworks.test b/clang/test/InstallAPI/reexported-frameworks.test
index 41c4f539c0b1fd..ad0005451e365d 100644
--- a/clang/test/InstallAPI/reexported-frameworks.test
+++ b/clang/test/InstallAPI/reexported-frameworks.test
@@ -1,3 +1,4 @@
+; XFAIL: target={{.*}}-zos{{.*}}
; RUN: rm -rf %t
; RUN: split-file %s %t
; RUN: sed -e "s|DSTROOT|%/t|g" %t/inputs.json.in > %t/inputs.json
diff --git a/clang/test/Modules/DebugInfoSubmoduleImport.c b/clang/test/Modules/DebugInfoSubmoduleImport.c
index 91cb11ef5958ac..3026a115180461 100644
--- a/clang/test/Modules/DebugInfoSubmoduleImport.c
+++ b/clang/test/Modules/DebugInfoSubmoduleImport.c
@@ -1,4 +1,4 @@
-// XFAIL: target={{.*}}-aix{{.*}}
+// XFAIL: target={{.*}}-aix{{.*}}, target={{.*}}-zos{{.*}}
// RUN: rm -rf %t
// RUN: %clang_cc1 -fmodules -fmodule-format=obj -debug-info-kind=limited -dwarf-ext-refs \
// RUN: -fimplicit-module-maps -x c -fmodules-cache-path=%t -I %S/Inputs \
diff --git a/clang/test/Modules/DebugInfoSubmodules.c b/clang/test/Modules/DebugInfoSubmodules.c
index f66dc7a96ef0a4..cefeb8efa7c562 100644
--- a/clang/test/Modules/DebugInfoSubmodules.c
+++ b/clang/test/Modules/DebugInfoSubmodules.c
@@ -3,7 +3,7 @@
// RUN: -fimplicit-module-maps -x c -fmodules-cache-path=%t -I %S/Inputs \
// RUN: %s -mllvm -debug-only=pchcontainer -emit-llvm -o %t.ll \
// RUN: 2>&1 | FileCheck %s
-// UNSUPPORTED: target={{.*}}-aix{{.*}}
+// UNSUPPORTED: target={{.*}}-aix{{.*}}, target={{.*}}-zos{{.*}}
// REQUIRES: asserts
#include "DebugSubmoduleA.h"
diff --git a/clang/test/Modules/class-instantiate-no-change-02.cppm b/clang/test/Modules/class-instantiate-no-change-02.cppm
index 9188408af6ec8b..03bb5f8bbe7dd7 100644
--- a/clang/test/Modules/class-instantiate-no-change-02.cppm
+++ b/clang/test/Modules/class-instantiate-no-change-02.cppm
@@ -1,3 +1,4 @@
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: rm -rf %t
// RUN: mkdir -p %t
// RUN: split-file %s %t
diff --git a/clang/test/Modules/class-instantiate-no-change.cppm b/clang/test/Modules/class-instantiate-no-change.cppm
index 6ea7d24252ab56..bf7357028c73cf 100644
--- a/clang/test/Modules/class-instantiate-no-change.cppm
+++ b/clang/test/Modules/class-instantiate-no-change.cppm
@@ -1,3 +1,4 @@
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: rm -rf %t
// RUN: mkdir -p %t
// RUN: split-file %s %t
diff --git a/clang/test/Modules/diagnostic-options-out-of-date.m b/clang/test/Modules/diagnostic-options-out-of-date.m
index fd98a8f99d6672..707998212bbb26 100644
--- a/clang/test/Modules/diagnostic-options-out-of-date.m
+++ b/clang/test/Modules/diagnostic-options-out-of-date.m
@@ -1,3 +1,4 @@
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: rm -rf %t
// Build A.pcm
// RUN: %clang_cc1 -Werror -Wno-conversion -fmodules-cache-path=%t -fmodules -fimplicit-module-maps -I %S/Inputs %s -fmodules-disable-diagnostic-validation
diff --git a/clang/test/Modules/double-quotes.m b/clang/test/Modules/double-quotes.m
index b5b4db9911b661..46534660f9720a 100644
--- a/clang/test/Modules/double-quotes.m
+++ b/clang/test/Modules/double-quotes.m
@@ -1,3 +1,4 @@
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: rm -rf %t
// RUN: mkdir %t
diff --git a/clang/test/Modules/framework-public-includes-private.m b/clang/test/Modules/framework-public-includes-private.m
index f6ddaf42ab8565..420dd87a1bfb76 100644
--- a/clang/test/Modules/framework-public-includes-private.m
+++ b/clang/test/Modules/framework-public-includes-private.m
@@ -1,3 +1,4 @@
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: rm -rf %t
// RUN: mkdir %t
diff --git a/clang/test/Modules/modules-reduced-bmi.cppm b/clang/test/Modules/modules-reduced-bmi.cppm
index a2636f6df988ee..54445f38d4c352 100644
--- a/clang/test/Modules/modules-reduced-bmi.cppm
+++ b/clang/test/Modules/modules-reduced-bmi.cppm
@@ -1,3 +1,4 @@
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: rm -rf %t
// RUN: mkdir -p %t
// RUN: split-file %s %t
diff --git a/clang/test/Modules/no-external-type-id.cppm b/clang/test/Modules/no-external-type-id.cppm
index 2c05769e4f0821..41a65032fbbdb5 100644
--- a/clang/test/Modules/no-external-type-id.cppm
+++ b/clang/test/Modules/no-external-type-id.cppm
@@ -1,5 +1,6 @@
// Testing that we won't record the type ID from external modules.
//
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: rm -rf %t
// RUN: split-file %s %t
// RUN: cd %t
diff --git a/clang/test/Modules/no-transitive-decl-change-2.cppm b/clang/test/Modules/no-transitive-decl-change-2.cppm
index fe29d9169201d6..56053a642335bc 100644
--- a/clang/test/Modules/no-transitive-decl-change-2.cppm
+++ b/clang/test/Modules/no-transitive-decl-change-2.cppm
@@ -1,5 +1,6 @@
// Test that adding a new unused decl within reduced BMI may not produce a transitive change.
//
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: rm -rf %t
// RUN: split-file %s %t
//
diff --git a/clang/test/Modules/no-transitive-decl-change-4.cppm b/clang/test/Modules/no-transitive-decl-change-4.cppm
index bb7e47f32669e7..f06dc18d405222 100644
--- a/clang/test/Modules/no-transitive-decl-change-4.cppm
+++ b/clang/test/Modules/no-transitive-decl-change-4.cppm
@@ -1,5 +1,6 @@
// Test that adding a new unused decl within reduced BMI may not produce a transitive change.
//
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: rm -rf %t
// RUN: split-file %s %t
//
diff --git a/clang/test/Modules/no-transitive-decls-change.cppm b/clang/test/Modules/no-transitive-decls-change.cppm
index 83594b09ea7896..4807a297fd39ac 100644
--- a/clang/test/Modules/no-transitive-decls-change.cppm
+++ b/clang/test/Modules/no-transitive-decls-change.cppm
@@ -1,6 +1,7 @@
// Testing that changing a declaration in an unused module file won't change
// the BMI of the current module file.
//
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: rm -rf %t
// RUN: split-file %s %t
//
diff --git a/clang/test/Modules/no-transitive-identifier-change.cppm b/clang/test/Modules/no-transitive-identifier-change.cppm
index 541c8ae754960b..bc7bd3a3bc7339 100644
--- a/clang/test/Modules/no-transitive-identifier-change.cppm
+++ b/clang/test/Modules/no-transitive-identifier-change.cppm
@@ -1,6 +1,7 @@
// Testing that adding an new identifier in an unused module file won't change
// the BMI of the current module file.
//
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: rm -rf %t
// RUN: split-file %s %t
//
diff --git a/clang/test/Modules/no-transitive-source-location-change-2.cppm b/clang/test/Modules/no-transitive-source-location-change-2.cppm
index f16b945a04d69e..15f36428b4bc1e 100644
--- a/clang/test/Modules/no-transitive-source-location-change-2.cppm
+++ b/clang/test/Modules/no-transitive-source-location-change-2.cppm
@@ -1,6 +1,7 @@
// Testing that adding a new line in a module interface unit won't cause the BMI
// of consuming module unit changes.
//
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: rm -rf %t
// RUN: split-file %s %t
//
diff --git a/clang/test/Modules/no-transitive-source-location-change.cppm b/clang/test/Modules/no-transitive-source-location-change.cppm
index 2a84ef6a912f54..596bd47384057e 100644
--- a/clang/test/Modules/no-transitive-source-location-change.cppm
+++ b/clang/test/Modules/no-transitive-source-location-change.cppm
@@ -1,6 +1,7 @@
// Testing that adding a new line in a module interface unit won't cause the BMI
// of consuming module unit changes.
//
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: rm -rf %t
// RUN: split-file %s %t
//
diff --git a/clang/test/Modules/no-transitive-type-change.cppm b/clang/test/Modules/no-transitive-type-change.cppm
index 9ec72e851b17dc..13008b2593716d 100644
--- a/clang/test/Modules/no-transitive-type-change.cppm
+++ b/clang/test/Modules/no-transitive-type-change.cppm
@@ -1,6 +1,7 @@
// Testing that changing a type in an unused module file won't change
// the BMI of the current module file.
//
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: rm -rf %t
// RUN: split-file %s %t
//
diff --git a/clang/test/Modules/prune-non-affecting-module-map-files-textual.c b/clang/test/Modules/prune-non-affecting-module-map-files-textual.c
index 90ceb089eb5dec..b18a1efffad492 100644
--- a/clang/test/Modules/prune-non-affecting-module-map-files-textual.c
+++ b/clang/test/Modules/prune-non-affecting-module-map-files-textual.c
@@ -1,6 +1,7 @@
// This test checks that a module map with a textual header can be marked as
// non-affecting.
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: rm -rf %t && mkdir %t
// RUN: split-file %s %t
diff --git a/clang/test/Modules/prune-non-affecting-module-map-files.m b/clang/test/Modules/prune-non-affecting-module-map-files.m
index ba2b3a306eaf46..8895b42f940b07 100644
--- a/clang/test/Modules/prune-non-affecting-module-map-files.m
+++ b/clang/test/Modules/prune-non-affecting-module-map-files.m
@@ -1,6 +1,7 @@
// Check that the presence of non-affecting module map files does not affect the
// contents of PCM files.
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: rm -rf %t && mkdir %t
// RUN: split-file %s %t
diff --git a/clang/test/Modules/stress1.cpp b/clang/test/Modules/stress1.cpp
index c47e04dcf50973..8563b8f789f4e7 100644
--- a/clang/test/Modules/stress1.cpp
+++ b/clang/test/Modules/stress1.cpp
@@ -1,3 +1,4 @@
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: rm -rf %t
// RUN: cd %S
//
diff --git a/clang/test/Parser/cxx2c-expansion-statements.cpp b/clang/test/Parser/cxx2c-expansion-statements.cpp
index 3a28b3268fd7a1..49a8280b10c61a 100644
--- a/clang/test/Parser/cxx2c-expansion-statements.cpp
+++ b/clang/test/Parser/cxx2c-expansion-statements.cpp
@@ -1,3 +1,4 @@
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: %clang_cc1 %s -std=c++2c -fsyntax-only -verify
namespace std {
template <typename T>
diff --git a/clang/test/Preprocessor/SOURCE_DATE_EPOCH.c b/clang/test/Preprocessor/SOURCE_DATE_EPOCH.c
index 30aec44a535d71..44384fe784c15e 100644
--- a/clang/test/Preprocessor/SOURCE_DATE_EPOCH.c
+++ b/clang/test/Preprocessor/SOURCE_DATE_EPOCH.c
@@ -1,3 +1,4 @@
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: %clang_cc1 -source-date-epoch 0 -E %s | FileCheck %s --check-prefix=19700101
// 19700101: const char date[] = "Jan 1 1970";
diff --git a/clang/test/Sema/warn-unused-but-set-static-global.cpp b/clang/test/Sema/warn-unused-but-set-static-global.cpp
index e0354848bdd99a..1c47e1d2abd8e6 100644
--- a/clang/test/Sema/warn-unused-but-set-static-global.cpp
+++ b/clang/test/Sema/warn-unused-but-set-static-global.cpp
@@ -1,3 +1,4 @@
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: %clang_cc1 -fsyntax-only -Wunused-but-set-variable -verify -std=c++17 %s
// RUN: %clang_cc1 -fsyntax-only -Wunused-but-set-variable -Wno-unused-but-set-global -verify=no-global -std=c++17 %s
// no-global-no-diagnostics
diff --git a/clang/test/SemaCXX/cxx2a-nttp-printing.cpp b/clang/test/SemaCXX/cxx2a-nttp-printing.cpp
index cace0bc94f3909..09360ca739f3c8 100644
--- a/clang/test/SemaCXX/cxx2a-nttp-printing.cpp
+++ b/clang/test/SemaCXX/cxx2a-nttp-printing.cpp
@@ -1,3 +1,4 @@
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: %clang_cc1 %s -std=c++20 -fsyntax-only -verify
template <int N> struct Str {
diff --git a/clang/test/SemaCXX/thread-specifier.cpp b/clang/test/SemaCXX/thread-specifier.cpp
index 2b909ecd175d04..d476349f70c49a 100644
--- a/clang/test/SemaCXX/thread-specifier.cpp
+++ b/clang/test/SemaCXX/thread-specifier.cpp
@@ -1,3 +1,4 @@
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: %clang_cc1 -fsyntax-only -std=c++23 -verify %s
namespace GH140509 {
diff --git a/clang/test/Tooling/clang-diff-ast.cpp b/clang/test/Tooling/clang-diff-ast.cpp
index a8efda50a4052e..51b85f33ad9a9a 100644
--- a/clang/test/Tooling/clang-diff-ast.cpp
+++ b/clang/test/Tooling/clang-diff-ast.cpp
@@ -1,3 +1,4 @@
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: clang-diff -ast-dump %s -- -std=c++11 | FileCheck %s
diff --git a/clang/test/Tooling/clang-diff-basic.cpp b/clang/test/Tooling/clang-diff-basic.cpp
index a0c0163530ffaa..3fa80685db2395 100644
--- a/clang/test/Tooling/clang-diff-basic.cpp
+++ b/clang/test/Tooling/clang-diff-basic.cpp
@@ -1,3 +1,4 @@
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: clang-diff -dump-matches %S/Inputs/clang-diff-basic-src.cpp %s -- | FileCheck %s
// CHECK: Match TranslationUnitDecl{{.*}} to TranslationUnitDecl
diff --git a/clang/test/Tooling/clang-diff-html.test b/clang/test/Tooling/clang-diff-html.test
index 00d9e07d2fcf4b..e364dde5f98e3c 100644
--- a/clang/test/Tooling/clang-diff-html.test
+++ b/clang/test/Tooling/clang-diff-html.test
@@ -1,3 +1,4 @@
+XFAIL: target={{.*}}-zos{{.*}}
RUN: clang-diff -html %S/Inputs/clang-diff-basic-src.cpp %S/clang-diff-basic.cpp -- | FileCheck %s
CHECK: <pre><div id='L' class='code'><span id='L0' tid='R0' title='TranslationUnitDecl
diff --git a/clang/test/Tooling/clang-diff-json.cpp b/clang/test/Tooling/clang-diff-json.cpp
index cc2bb0805e53fc..c09e15850aef27 100644
--- a/clang/test/Tooling/clang-diff-json.cpp
+++ b/clang/test/Tooling/clang-diff-json.cpp
@@ -1,3 +1,4 @@
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: clang-diff -ast-dump-json %s -- \
// RUN: | %python -c 'import json, sys; json.dump(json.loads(sys.stdin.read()), sys.stdout, sort_keys=True, indent=2)' \
// RUN: | FileCheck %s
>From 888bce58ec03db689f3ec5f3ac8a8b91ecf14bed Mon Sep 17 00:00:00 2001
From: Sean Perry <perry at ca.ibm.com>
Date: Tue, 20 Oct 2026 17:21:25 -0400
Subject: [PATCH 02/17] [SystemZ] Clean up more clang lit tests for z/OS
---
.../conflict-preserves-unrelated-zero-length-insert.test | 1 +
.../ssaf-src-edit-merge/conflict-stderr-without-sarif.test | 1 +
.../test/Analysis/Scalable/ssaf-src-edit-merge/empty-input.test | 1 +
.../Scalable/ssaf-src-edit-merge/identical-overlap.test | 1 +
.../Scalable/ssaf-src-edit-merge/no-conflict-sarif-empty.test | 1 +
.../Analysis/Scalable/ssaf-src-edit-merge/non-overlapping.test | 1 +
.../Analysis/Scalable/ssaf-src-edit-merge/order-invariance.test | 1 +
.../pre-dedup-identical-non-zero-length.test | 1 +
.../ssaf-src-edit-merge/pre-dedup-zero-length-insert.test | 1 +
.../range-overlap-cluster-of-three-sarif.test | 1 +
.../ssaf-src-edit-merge/range-overlap-conflict-sarif.test | 1 +
.../ssaf-src-edit-merge/single-input-internal-conflict.test | 1 +
.../Analysis/Scalable/ssaf-src-edit-merge/single-input.test | 1 +
.../Scalable/ssaf-src-edit-merge/three-input-all-conflict.test | 1 +
.../ssaf-src-edit-merge/three-input-conflict-sarif.test | 1 +
.../two-conflicts-different-offsets-sarif.test | 1 +
.../Scalable/ssaf-src-edit-merge/two-input-conflict-sarif.test | 1 +
.../Scalable/ssaf-src-edit-merge/two-input-conflict.test | 1 +
clang/test/ClangScanDeps/modules-debug-dir.c | 1 +
clang/test/ClangScanDeps/modules-no-undeclared-includes.c | 2 +-
clang/test/ClangScanDeps/modules-pch-common-submodule.c | 2 +-
clang/test/ClangScanDeps/modules-pch-common-via-submodule.c | 2 +-
clang/test/ClangScanDeps/modules-pch-dangling.c | 2 +-
clang/test/ClangScanDeps/modules-pch.c | 2 +-
clang/test/ClangScanDeps/print-timing.c | 1 +
clang/test/CodeGenCXX/module-initializer-elision.cpp | 1 +
clang/test/CoverageMapping/coroutine.cpp | 1 +
clang/test/DebugInfo/CXX/byval.cpp | 1 +
clang/test/Driver/hip-version.hip | 2 +-
clang/test/Driver/nostdincxx.cpp | 1 +
clang/test/Frontend/backend-attribute-error-warning-optimize.c | 1 +
clang/test/Frontend/backend-attribute-error-warning.c | 1 +
clang/test/Frontend/ir-support.c | 1 +
clang/test/Modules/ASTSignature.c | 1 +
clang/test/Modules/cxx20-fatal-module-loader-error.cpp | 1 +
clang/test/Modules/lsv-debuginfo.cpp | 2 +-
clang/test/Modules/stress-objc.m | 1 +
clang/test/PCH/debug-info-pch-path.c | 2 +-
clang/test/PCH/gch-probe.c | 2 +-
clang/test/PCH/pragma-redefine-extname.c | 1 +
clang/test/Sema/LifetimeSafety/noescape-violation.cpp | 1 +
clang/test/Sema/attr-nonblocking-constraints.cpp | 1 +
clang/test/SemaCUDA/managed-var.cu | 1 +
clang/test/SemaCXX/cxx2c-expansion-stmts.cpp | 1 +
clang/test/SemaCXX/expansion-statements-local-extern-decls.cpp | 1 +
45 files changed, 45 insertions(+), 9 deletions(-)
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/conflict-preserves-unrelated-zero-length-insert.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/conflict-preserves-unrelated-zero-length-insert.test
index bdda153a0034b0..1bcbd6084ddf0b 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/conflict-preserves-unrelated-zero-length-insert.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/conflict-preserves-unrelated-zero-length-insert.test
@@ -13,6 +13,7 @@
# (file, offset, length, text), not just (file, offset), or it will
# collaterally delete this unrelated insertion.
+# XFAIL: target={{.*}}-zos{{.*}}
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# RUN: printf '%%80s' '' > %t.dir/foo.cpp
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/conflict-stderr-without-sarif.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/conflict-stderr-without-sarif.test
index 9d58c9f0fbc853..5afefe7e701c84 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/conflict-stderr-without-sarif.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/conflict-stderr-without-sarif.test
@@ -2,6 +2,7 @@
# NOT pass --sarif-conflicts-out=. Stderr cluster line is still emitted
# and drop-all still applies; no SARIF file is created at any path.
+# XFAIL: target={{.*}}-zos{{.*}}
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# RUN: printf '%%80s' '' > %t.dir/foo.cpp
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/empty-input.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/empty-input.test
index c45b8001797c00..9818df738c07e4 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/empty-input.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/empty-input.test
@@ -2,6 +2,7 @@
# a valid TranslationUnitReplacements with an empty Replacements sequence.
# Per spec the MainSourceFile is the shared value when all inputs agree.
+# XFAIL: target={{.*}}-zos{{.*}}
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# RUN: printf '%%80s' '' > %t.dir/foo.cpp
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/identical-overlap.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/identical-overlap.test
index 300a6f9add3927..b327a8db75ba40 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/identical-overlap.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/identical-overlap.test
@@ -2,6 +2,7 @@
# inputs collapse to one in the merged output. No "conflict:" line because
# this is a textbook dedup, not a conflict.
+# XFAIL: target={{.*}}-zos{{.*}}
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# RUN: printf '%%80s' '' > %t.dir/foo.cpp
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/no-conflict-sarif-empty.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/no-conflict-sarif-empty.test
index 3353d4b4470be3..e7172d710ed00d 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/no-conflict-sarif-empty.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/no-conflict-sarif-empty.test
@@ -2,6 +2,7 @@
# with results: [] (empty array). The merged YAML retains both replacements.
# Tool exits 0; stderr contains no `conflict:` line.
+# XFAIL: target={{.*}}-zos{{.*}}
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# RUN: printf '%%80s' '' > %t.dir/foo.cpp
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/non-overlapping.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/non-overlapping.test
index 314d35ff1b77e8..33f56a13e25380 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/non-overlapping.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/non-overlapping.test
@@ -2,6 +2,7 @@
# Conflicts are detected per-(file, offset) so disjoint offsets yield no
# tool-level "conflict:" line, and exit is 0.
+# XFAIL: target={{.*}}-zos{{.*}}
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# Real source file required so groupReplacements doesn't drop the entries.
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/order-invariance.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/order-invariance.test
index 84d21423269573..655cf6137504de 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/order-invariance.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/order-invariance.test
@@ -3,6 +3,7 @@
# the deterministic sort in flattenFileChanges and the dedup-by-key
# logic don't inadvertently depend on input order.
+# XFAIL: target={{.*}}-zos{{.*}}
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# RUN: printf '%%80s' '' > %t.dir/foo.cpp
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/pre-dedup-identical-non-zero-length.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/pre-dedup-identical-non-zero-length.test
index ce802f23ecae77..94d27f817b77f2 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/pre-dedup-identical-non-zero-length.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/pre-dedup-identical-non-zero-length.test
@@ -3,6 +3,7 @@
# also covers this through library-side overlap detection; this test pins the
# pre-dedup pass's contract that the dedup applies regardless of length.
+# XFAIL: target={{.*}}-zos{{.*}}
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# RUN: printf '%%80s' '' > %t.dir/foo.cpp
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/pre-dedup-zero-length-insert.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/pre-dedup-zero-length-insert.test
index a545ad37b385fe..b657df5719016b 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/pre-dedup-zero-length-insert.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/pre-dedup-zero-length-insert.test
@@ -5,6 +5,7 @@
# where clang-apply-replacements' groupReplacements skipped dedup for plain
# TUReplacements and AtomicChange::replace stacked the duplicates.
+# XFAIL: target={{.*}}-zos{{.*}}
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# RUN: printf '%%80s' '' > %t.dir/foo.cpp
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/range-overlap-cluster-of-three-sarif.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/range-overlap-cluster-of-three-sarif.test
index 742ac28ef1a543..8a6cad0730fc2f 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/range-overlap-cluster-of-three-sarif.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/range-overlap-cluster-of-three-sarif.test
@@ -13,6 +13,7 @@
## This is the regression guard for transitive merging — it cannot be
## exercised by any pairwise-only fixture.
+# XFAIL: target={{.*}}-zos{{.*}}
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# RUN: printf '%%80s' '' > %t.dir/foo.cpp
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/range-overlap-conflict-sarif.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/range-overlap-conflict-sarif.test
index 19c04176fd37b9..836a2e1970eeb4 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/range-overlap-conflict-sarif.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/range-overlap-conflict-sarif.test
@@ -9,6 +9,7 @@
# This is the mandatory regression guard for the range-overlap cluster
# definition — it cannot be exercised by any same-offset fixture.
+# XFAIL: target={{.*}}-zos{{.*}}
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# RUN: printf '%%80s' '' > %t.dir/foo.cpp
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/single-input-internal-conflict.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/single-input-internal-conflict.test
index e14ead37fdf1a9..c26ebbf6a075ee 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/single-input-internal-conflict.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/single-input-internal-conflict.test
@@ -3,6 +3,7 @@
# this as a within-input conflict and drops one; the tool reports the
# cluster on stderr and exits 0.
+# XFAIL: target={{.*}}-zos{{.*}}
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# RUN: printf '%%80s' '' > %t.dir/foo.cpp
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/single-input.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/single-input.test
index 55c9399373f2a6..86d4553ac5e68a 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/single-input.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/single-input.test
@@ -2,6 +2,7 @@
# "If exactly one input is given, the tool SHALL still produce a one-run
# merged document equivalent to that input."
+# XFAIL: target={{.*}}-zos{{.*}}
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# RUN: printf '%%80s' '' > %t.dir/foo.cpp
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/three-input-all-conflict.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/three-input-all-conflict.test
index cc59927176736f..0526a9996c062a 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/three-input-all-conflict.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/three-input-all-conflict.test
@@ -4,6 +4,7 @@
# a "conflict:" line for the (file, offset) cluster with the full cluster
# size (3) and exits 0.
+# XFAIL: target={{.*}}-zos{{.*}}
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# RUN: printf '%%80s' '' > %t.dir/foo.cpp
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/three-input-conflict-sarif.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/three-input-conflict-sarif.test
index 2e7e32c16425b2..acbfe8444fb650 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/three-input-conflict-sarif.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/three-input-conflict-sarif.test
@@ -1,6 +1,7 @@
# Three inputs all conflict pairwise at (foo.cpp, 10) — drop-all removes
# all three from the merged YAML; SARIF result lists three relatedLocations.
+# XFAIL: target={{.*}}-zos{{.*}}
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# RUN: printf '%%80s' '' > %t.dir/foo.cpp
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/two-conflicts-different-offsets-sarif.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/two-conflicts-different-offsets-sarif.test
index e6d080018463c8..68a433c4ab2eb7 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/two-conflicts-different-offsets-sarif.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/two-conflicts-different-offsets-sarif.test
@@ -3,6 +3,7 @@
# removes all four; SARIF has two results, ordered by (file, min-offset)
# ascending so the offset-10 cluster precedes the offset-30 cluster.
+# XFAIL: target={{.*}}-zos{{.*}}
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# RUN: printf '%%80s' '' > %t.dir/foo.cpp
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/two-input-conflict-sarif.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/two-input-conflict-sarif.test
index 742557b3b2dc29..343c1f73dbab2b 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/two-input-conflict-sarif.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/two-input-conflict-sarif.test
@@ -4,6 +4,7 @@
# given by --sarif-conflicts-out= containing one error-level result with
# two relatedLocations (one per dropped candidate).
+# XFAIL: target={{.*}}-zos{{.*}}
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# RUN: printf '%%80s' '' > %t.dir/foo.cpp
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/two-input-conflict.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/two-input-conflict.test
index 029973d57f3b2e..23bb5d88d87c92 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/two-input-conflict.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/two-input-conflict.test
@@ -4,6 +4,7 @@
# tool emits one "conflict:" cluster line for that (file, offset) with the
# full cluster size, and exits 0.
+# XFAIL: target={{.*}}-zos{{.*}}
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# RUN: printf '%%80s' '' > %t.dir/foo.cpp
diff --git a/clang/test/ClangScanDeps/modules-debug-dir.c b/clang/test/ClangScanDeps/modules-debug-dir.c
index e2a0e1b7a5b012..372abf99d5090c 100644
--- a/clang/test/ClangScanDeps/modules-debug-dir.c
+++ b/clang/test/ClangScanDeps/modules-debug-dir.c
@@ -1,3 +1,4 @@
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: rm -rf %t
// RUN: split-file %s %t
// RUN: sed -e "s|DIR|%/t|g" %t/cdb.json.in > %t/cdb.json
diff --git a/clang/test/ClangScanDeps/modules-no-undeclared-includes.c b/clang/test/ClangScanDeps/modules-no-undeclared-includes.c
index 8039e98e71626a..0f106b0c6acbda 100644
--- a/clang/test/ClangScanDeps/modules-no-undeclared-includes.c
+++ b/clang/test/ClangScanDeps/modules-no-undeclared-includes.c
@@ -1,6 +1,6 @@
// Unsupported on AIX because we don't support the requisite "__clangast"
// section in XCOFF yet.
-// UNSUPPORTED: target={{.*}}-aix{{.*}}
+// UNSUPPORTED: target={{.*}}-aix{{.*}}, target={{.*}}-zos{{.*}}
// RUN: rm -rf %t && mkdir %t
// RUN: split-file %s %t
diff --git a/clang/test/ClangScanDeps/modules-pch-common-submodule.c b/clang/test/ClangScanDeps/modules-pch-common-submodule.c
index 78c60c8f3629f2..c3bb088da7558e 100644
--- a/clang/test/ClangScanDeps/modules-pch-common-submodule.c
+++ b/clang/test/ClangScanDeps/modules-pch-common-submodule.c
@@ -1,6 +1,6 @@
// Unsupported on AIX because we don't support the requisite "__clangast"
// section in XCOFF yet.
-// UNSUPPORTED: target={{.*}}-aix{{.*}}
+// UNSUPPORTED: target={{.*}}-aix{{.*}}, target={{.*}}-zos{{.*}}
// Check that when depending on a precompiled module, we depend on the
// **top-level** module. Submodules don't have some information present (for
diff --git a/clang/test/ClangScanDeps/modules-pch-common-via-submodule.c b/clang/test/ClangScanDeps/modules-pch-common-via-submodule.c
index 6d266f15c3ec9f..1fbffa45ffc13a 100644
--- a/clang/test/ClangScanDeps/modules-pch-common-via-submodule.c
+++ b/clang/test/ClangScanDeps/modules-pch-common-via-submodule.c
@@ -1,6 +1,6 @@
// Unsupported on AIX because we don't support the requisite "__clangast"
// section in XCOFF yet.
-// UNSUPPORTED: target={{.*}}-aix{{.*}}
+// UNSUPPORTED: target={{.*}}-aix{{.*}}, target={{.*}}-zos{{.*}}
// Check that we discover dependency on a precompiled module when it's imported
// by a **submodule** instead of a top-level module.
diff --git a/clang/test/ClangScanDeps/modules-pch-dangling.c b/clang/test/ClangScanDeps/modules-pch-dangling.c
index b96a759ff3c6d1..b408247b06b701 100644
--- a/clang/test/ClangScanDeps/modules-pch-dangling.c
+++ b/clang/test/ClangScanDeps/modules-pch-dangling.c
@@ -1,6 +1,6 @@
// Unsupported on AIX because we don't support the requisite "__clangast"
// section in XCOFF yet.
-// UNSUPPORTED: target={{.*}}-aix{{.*}}
+// UNSUPPORTED: target={{.*}}-aix{{.*}}, target={{.*}}-zos{{.*}}
// This test checks that the dependency scanner can handle larger amount of
// explicitly built modules retrieved from the PCH.
diff --git a/clang/test/ClangScanDeps/modules-pch.c b/clang/test/ClangScanDeps/modules-pch.c
index 0235c2104bb076..91833f3a99fe03 100644
--- a/clang/test/ClangScanDeps/modules-pch.c
+++ b/clang/test/ClangScanDeps/modules-pch.c
@@ -1,6 +1,6 @@
// Unsupported on AIX because we don't support the requisite "__clangast"
// section in XCOFF yet.
-// UNSUPPORTED: target={{.*}}-aix{{.*}}
+// UNSUPPORTED: target={{.*}}-aix{{.*}}, target={{.*}}-zos{{.*}}
// RUN: rm -rf %t && mkdir %t
// RUN: cp %S/Inputs/modules-pch/* %t
diff --git a/clang/test/ClangScanDeps/print-timing.c b/clang/test/ClangScanDeps/print-timing.c
index fa2a433b955370..f17327b279bc3f 100644
--- a/clang/test/ClangScanDeps/print-timing.c
+++ b/clang/test/ClangScanDeps/print-timing.c
@@ -1,3 +1,4 @@
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: rm -rf %t && mkdir %t
// RUN: split-file %s %t
diff --git a/clang/test/CodeGenCXX/module-initializer-elision.cpp b/clang/test/CodeGenCXX/module-initializer-elision.cpp
index 7f6d0b68cf55d4..f81d9c4623ba9b 100644
--- a/clang/test/CodeGenCXX/module-initializer-elision.cpp
+++ b/clang/test/CodeGenCXX/module-initializer-elision.cpp
@@ -1,4 +1,5 @@
// UNSUPPORTED: target={{.*}}-apple-darwin
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: rm -rf %t
// RUN: split-file %s %t
diff --git a/clang/test/CoverageMapping/coroutine.cpp b/clang/test/CoverageMapping/coroutine.cpp
index d322bc351a7276..3e8b4afde2fc23 100644
--- a/clang/test/CoverageMapping/coroutine.cpp
+++ b/clang/test/CoverageMapping/coroutine.cpp
@@ -1,3 +1,4 @@
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: %clang_cc1 -mllvm -emptyline-comment-coverage=false -triple x86_64-unknown-linux-gnu -std=c++20 -emit-llvm -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping %s -o - | FileCheck %s
namespace std {
diff --git a/clang/test/DebugInfo/CXX/byval.cpp b/clang/test/DebugInfo/CXX/byval.cpp
index ac122ec567da79..2bf919b5d6cfe7 100644
--- a/clang/test/DebugInfo/CXX/byval.cpp
+++ b/clang/test/DebugInfo/CXX/byval.cpp
@@ -1,4 +1,5 @@
// FIXME: Check IR rather than asm, then triple is not needed.
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: %clang --target=%itanium_abi_triple -g -S %s -o - | FileCheck %s
// Test to check presence of debug info for byval parameter.
class DAG {
diff --git a/clang/test/Driver/hip-version.hip b/clang/test/Driver/hip-version.hip
index 9d5833142fe9dc..bdcd098eea7a1e 100644
--- a/clang/test/Driver/hip-version.hip
+++ b/clang/test/Driver/hip-version.hip
@@ -1,6 +1,6 @@
// REQUIRES: x86-registered-target
// REQUIRES: amdgpu-registered-target
-// UNSUPPORTED: target={{.*}}-aix{{.*}}
+// UNSUPPORTED: target={{.*}}-aix{{.*}}, target={{.*}}-zos{{.*}}
// RUN: %clang -v --rocm-path=%S/Inputs/rocm 2>&1 \
// RUN: | FileCheck -check-prefixes=FOUND %s
diff --git a/clang/test/Driver/nostdincxx.cpp b/clang/test/Driver/nostdincxx.cpp
index 94d74f230eb16c..73ebe7947ea63b 100644
--- a/clang/test/Driver/nostdincxx.cpp
+++ b/clang/test/Driver/nostdincxx.cpp
@@ -8,3 +8,4 @@
// MSVC, PS4, PS5 have C++ headers in the same directory as C headers.
// UNSUPPORTED: ms-sdk, target={{.*-(ps4|ps5)}}
+// XFAIL: target={{.*}}-zos{{.*}}
diff --git a/clang/test/Frontend/backend-attribute-error-warning-optimize.c b/clang/test/Frontend/backend-attribute-error-warning-optimize.c
index d5a8d57e36c964..6ff840a4651fb5 100644
--- a/clang/test/Frontend/backend-attribute-error-warning-optimize.c
+++ b/clang/test/Frontend/backend-attribute-error-warning-optimize.c
@@ -1,3 +1,4 @@
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: %clang_cc1 -O2 -verify -emit-codegen-only %s
__attribute__((error("oh no foo"))) void foo(void);
diff --git a/clang/test/Frontend/backend-attribute-error-warning.c b/clang/test/Frontend/backend-attribute-error-warning.c
index c3c7803479aac9..ff5a0c4f1643b9 100644
--- a/clang/test/Frontend/backend-attribute-error-warning.c
+++ b/clang/test/Frontend/backend-attribute-error-warning.c
@@ -1,3 +1,4 @@
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: %clang_cc1 -verify=expected,enabled -emit-codegen-only %s
// RUN: %clang_cc1 -verify -emit-codegen-only -Wno-attribute-warning %s
diff --git a/clang/test/Frontend/ir-support.c b/clang/test/Frontend/ir-support.c
index d0c7dfa418cad2..3c819cf21d68dc 100644
--- a/clang/test/Frontend/ir-support.c
+++ b/clang/test/Frontend/ir-support.c
@@ -4,6 +4,7 @@
// We strip differing '.file' directives before comparing.
// Reference output:
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: %clang_cc1 -S -o - %s | grep -v '\.file' > %t.s
// LLVM bitcode:
diff --git a/clang/test/Modules/ASTSignature.c b/clang/test/Modules/ASTSignature.c
index 11d7c5c9d43d53..5a45cbfbbdea33 100644
--- a/clang/test/Modules/ASTSignature.c
+++ b/clang/test/Modules/ASTSignature.c
@@ -1,3 +1,4 @@
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: rm -rf %t
// RUN: %clang_cc1 -iquote %S/Inputs/ASTHash/ -fsyntax-only \
// RUN: -fmodules -fimplicit-module-maps -fmodules-strict-context-hash \
diff --git a/clang/test/Modules/cxx20-fatal-module-loader-error.cpp b/clang/test/Modules/cxx20-fatal-module-loader-error.cpp
index ea2b3a2274fd3b..d022620f107c89 100644
--- a/clang/test/Modules/cxx20-fatal-module-loader-error.cpp
+++ b/clang/test/Modules/cxx20-fatal-module-loader-error.cpp
@@ -1,3 +1,4 @@
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: rm -rf %t
// RUN: mkdir %t
// RUN: touch %t/A.pcm
diff --git a/clang/test/Modules/lsv-debuginfo.cpp b/clang/test/Modules/lsv-debuginfo.cpp
index 40455727ecddae..6394e7e8cc7a0c 100644
--- a/clang/test/Modules/lsv-debuginfo.cpp
+++ b/clang/test/Modules/lsv-debuginfo.cpp
@@ -1,5 +1,5 @@
// Test C++ -gmodules debug info in the PCMs with local submodule visibility.
-// UNSUPPORTED: target={{.*}}-aix{{.*}}
+// UNSUPPORTED: target={{.*}}-aix{{.*}}, target={{.*}}-zos{{.*}}
// REQUIRES: asserts
// RUN: rm -rf %t
// RUN: %clang_cc1 -triple %itanium_abi_triple -std=c++14 \
diff --git a/clang/test/Modules/stress-objc.m b/clang/test/Modules/stress-objc.m
index edbebd3576a95e..ef628e21ce0ea3 100644
--- a/clang/test/Modules/stress-objc.m
+++ b/clang/test/Modules/stress-objc.m
@@ -1,3 +1,4 @@
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: cd %S
// RUN: %clang_cc1 -emit-pch -x objective-c-header %s -o %t_c00.pch -fno-pch-timestamp
diff --git a/clang/test/PCH/debug-info-pch-path.c b/clang/test/PCH/debug-info-pch-path.c
index 0a4e9d8146f003..0b1cd038a4b7f6 100644
--- a/clang/test/PCH/debug-info-pch-path.c
+++ b/clang/test/PCH/debug-info-pch-path.c
@@ -1,6 +1,6 @@
// Unsupported on AIX because we don't support the requisite "__clangast"
// section in XCOFF yet.
-// UNSUPPORTED: target={{.*}}-aix{{.*}}
+// UNSUPPORTED: target={{.*}}-aix{{.*}}, target={{.*}}-zos{{.*}}
// RUN: rm -rf %t
// RUN: mkdir %t
diff --git a/clang/test/PCH/gch-probe.c b/clang/test/PCH/gch-probe.c
index 370abd26d25174..44896904b7cb14 100644
--- a/clang/test/PCH/gch-probe.c
+++ b/clang/test/PCH/gch-probe.c
@@ -1,6 +1,6 @@
// Unsupported on AIX because we don't support the requisite "__clangast"
// section in XCOFF yet.
-// UNSUPPORTED: target={{.*}}-aix{{.*}}
+// UNSUPPORTED: target={{.*}}-aix{{.*}}, target={{.*}}-zos{{.*}}
// For GCC compatibility, clang should probe also with the .gch extension.
// RUN: %clang -x c-header -c %s -o %t.h.gch
diff --git a/clang/test/PCH/pragma-redefine-extname.c b/clang/test/PCH/pragma-redefine-extname.c
index 70f03444388a73..baee0a6cc30335 100644
--- a/clang/test/PCH/pragma-redefine-extname.c
+++ b/clang/test/PCH/pragma-redefine-extname.c
@@ -1,4 +1,5 @@
/// Test this without pch.
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: %clang_cc1 -triple=x86_64-unknown-linux -include %S/pragma-redefine-extname.h %s -verify -emit-llvm -o - | FileCheck %s
/// Test with pch.
diff --git a/clang/test/Sema/LifetimeSafety/noescape-violation.cpp b/clang/test/Sema/LifetimeSafety/noescape-violation.cpp
index 9978850a92e51b..5ed358142feb9a 100644
--- a/clang/test/Sema/LifetimeSafety/noescape-violation.cpp
+++ b/clang/test/Sema/LifetimeSafety/noescape-violation.cpp
@@ -1,3 +1,4 @@
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: %clang_cc1 -fsyntax-only -flifetime-safety-inference -Wlifetime-safety-noescape -Wlifetime-safety-annotation-placement -verify %s
#include "Inputs/lifetime-analysis.h"
diff --git a/clang/test/Sema/attr-nonblocking-constraints.cpp b/clang/test/Sema/attr-nonblocking-constraints.cpp
index 400057768523c5..710dac0b6d91a5 100644
--- a/clang/test/Sema/attr-nonblocking-constraints.cpp
+++ b/clang/test/Sema/attr-nonblocking-constraints.cpp
@@ -1,3 +1,4 @@
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: %clang_cc1 -fsyntax-only -fblocks -fcxx-exceptions -std=c++20 -verify -Wfunction-effects -Wno-vla-extension %s
// These are in a separate file because errors (e.g. incompatible attributes) currently prevent
// the FXAnalysis pass from running at all.
diff --git a/clang/test/SemaCUDA/managed-var.cu b/clang/test/SemaCUDA/managed-var.cu
index 5e05c0d25f6e33..756662e0fe8ea9 100644
--- a/clang/test/SemaCUDA/managed-var.cu
+++ b/clang/test/SemaCUDA/managed-var.cu
@@ -1,3 +1,4 @@
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: %clang_cc1 -fsyntax-only -verify -x hip %s
// RUN: %clang_cc1 -fsyntax-only -fcuda-is-device -verify -x hip %s
// RUN: %clang_cc1 -fsyntax-only -fgpu-rdc -verify -x hip %s
diff --git a/clang/test/SemaCXX/cxx2c-expansion-stmts.cpp b/clang/test/SemaCXX/cxx2c-expansion-stmts.cpp
index c195f662597b59..f7985b6b810398 100644
--- a/clang/test/SemaCXX/cxx2c-expansion-stmts.cpp
+++ b/clang/test/SemaCXX/cxx2c-expansion-stmts.cpp
@@ -1,3 +1,4 @@
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: %clang_cc1 %s -std=c++2c -fsyntax-only -fdeclspec -fblocks -Wno-vla-cxx-extension -fconstexpr-steps=10000 -verify=expected,old-interp
// RUN: %clang_cc1 %s -std=c++2c -fsyntax-only -fdeclspec -fblocks -Wno-vla-cxx-extension -fconstexpr-steps=10000 -verify=expected,new-interp -fexperimental-new-constant-interpreter
namespace std {
diff --git a/clang/test/SemaCXX/expansion-statements-local-extern-decls.cpp b/clang/test/SemaCXX/expansion-statements-local-extern-decls.cpp
index a99db79b1b72fa..1f4c5ea9dc68b2 100644
--- a/clang/test/SemaCXX/expansion-statements-local-extern-decls.cpp
+++ b/clang/test/SemaCXX/expansion-statements-local-extern-decls.cpp
@@ -1,3 +1,4 @@
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: %clang_cc1 %s -I %S/Inputs -std=c++2c -fsyntax-only -verify
int wibble(); // #wibble_decl
>From 96ea673e57ba65117315bb57b5bd7f6c89441f3b Mon Sep 17 00:00:00 2001
From: Sean Perry <perry at ca.ibm.com>
Date: Tue, 20 Oct 2026 22:56:45 -0400
Subject: [PATCH 03/17] mark XPASS on lop as system-zos
---
.../conflict-preserves-unrelated-zero-length-insert.test | 2 +-
.../ssaf-src-edit-merge/conflict-stderr-without-sarif.test | 2 +-
.../test/Analysis/Scalable/ssaf-src-edit-merge/empty-input.test | 2 +-
.../Scalable/ssaf-src-edit-merge/identical-overlap.test | 2 +-
.../Scalable/ssaf-src-edit-merge/no-conflict-sarif-empty.test | 2 +-
.../Analysis/Scalable/ssaf-src-edit-merge/non-overlapping.test | 2 +-
.../Analysis/Scalable/ssaf-src-edit-merge/order-invariance.test | 2 +-
.../pre-dedup-identical-non-zero-length.test | 2 +-
.../ssaf-src-edit-merge/pre-dedup-zero-length-insert.test | 2 +-
.../range-overlap-cluster-of-three-sarif.test | 2 +-
.../ssaf-src-edit-merge/range-overlap-conflict-sarif.test | 2 +-
.../ssaf-src-edit-merge/single-input-internal-conflict.test | 2 +-
.../Analysis/Scalable/ssaf-src-edit-merge/single-input.test | 2 +-
.../Scalable/ssaf-src-edit-merge/three-input-all-conflict.test | 2 +-
.../ssaf-src-edit-merge/three-input-conflict-sarif.test | 2 +-
.../two-conflicts-different-offsets-sarif.test | 2 +-
.../Scalable/ssaf-src-edit-merge/two-input-conflict-sarif.test | 2 +-
.../Scalable/ssaf-src-edit-merge/two-input-conflict.test | 2 +-
clang/test/ClangScanDeps/modules-pch-compatibility.c | 2 +-
clang/test/ClangScanDeps/print-timing.c | 2 +-
clang/test/CodeGen/2007-04-14-FNoBuiltin.c | 2 +-
clang/test/CodeGen/builtin-rename.c | 2 +-
clang/test/CodeGen/libcalls-fno-builtin.c | 2 +-
clang/test/CodeGen/nomathbuiltin.c | 2 +-
clang/test/CodeGen/variable-array.c | 2 +-
.../CodeGenHipStdPar/select-accelerator-code-pass-ordering.cpp | 2 +-
clang/test/CoverageMapping/coroutine.cpp | 2 +-
clang/test/CoverageMapping/mcdc-error-conditions.cpp | 2 +-
clang/test/Driver/amdgpu-hip-system-arch.c | 2 +-
clang/test/Driver/crash-diagnostics-tar.c | 2 +-
clang/test/Driver/no-objc-arr.m | 2 +-
clang/test/Driver/nostdincxx.cpp | 2 +-
clang/test/Driver/nvptx-cuda-system-arch.c | 2 +-
clang/test/Driver/openmp-system-arch.c | 2 +-
clang/test/ExtractAPI/invalid_utf8_doc_comment.c | 2 +-
clang/test/Frontend/ir-support.c | 2 +-
clang/test/Index/preamble-reparse-changed-module.m | 2 +-
clang/test/Index/record-completion-invocation.c | 2 +-
clang/test/Index/record-parsing-invocation.c | 2 +-
clang/test/InstallAPI/binary-attributes.test | 2 +-
clang/test/InstallAPI/reexport-with-linker-symbols.test | 2 +-
clang/test/InstallAPI/reexported-frameworks.test | 2 +-
clang/test/Modules/ASTSignature.c | 2 +-
clang/test/Modules/class-instantiate-no-change-02.cppm | 2 +-
clang/test/Modules/class-instantiate-no-change.cppm | 2 +-
clang/test/Modules/cxx20-fatal-module-loader-error.cpp | 2 +-
clang/test/Modules/diagnostic-options-out-of-date.m | 2 +-
clang/test/Modules/double-quotes.m | 2 +-
clang/test/Modules/framework-public-includes-private.m | 2 +-
clang/test/Modules/modules-reduced-bmi.cppm | 2 +-
clang/test/Modules/no-external-type-id.cppm | 2 +-
clang/test/Modules/no-transitive-decl-change-2.cppm | 2 +-
clang/test/Modules/no-transitive-decl-change-4.cppm | 2 +-
clang/test/Modules/no-transitive-decls-change.cppm | 2 +-
clang/test/Modules/no-transitive-identifier-change.cppm | 2 +-
clang/test/Modules/no-transitive-source-location-change-2.cppm | 2 +-
clang/test/Modules/no-transitive-source-location-change.cppm | 2 +-
clang/test/Modules/no-transitive-type-change.cppm | 2 +-
.../test/Modules/prune-non-affecting-module-map-files-textual.c | 2 +-
clang/test/Modules/prune-non-affecting-module-map-files.m | 2 +-
clang/test/Modules/stress-objc.m | 2 +-
clang/test/Modules/stress1.cpp | 2 +-
clang/test/PCH/pragma-redefine-extname.c | 2 +-
clang/test/Preprocessor/SOURCE_DATE_EPOCH.c | 2 +-
clang/test/Tooling/clang-diff-ast.cpp | 2 +-
clang/test/Tooling/clang-diff-basic.cpp | 2 +-
clang/test/Tooling/clang-diff-html.test | 2 +-
67 files changed, 67 insertions(+), 67 deletions(-)
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/conflict-preserves-unrelated-zero-length-insert.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/conflict-preserves-unrelated-zero-length-insert.test
index 1bcbd6084ddf0b..458f54f056a830 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/conflict-preserves-unrelated-zero-length-insert.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/conflict-preserves-unrelated-zero-length-insert.test
@@ -13,7 +13,7 @@
# (file, offset, length, text), not just (file, offset), or it will
# collaterally delete this unrelated insertion.
-# XFAIL: target={{.*}}-zos{{.*}}
+# XFAIL: system-zos
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# RUN: printf '%%80s' '' > %t.dir/foo.cpp
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/conflict-stderr-without-sarif.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/conflict-stderr-without-sarif.test
index 5afefe7e701c84..15fb1e89a38584 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/conflict-stderr-without-sarif.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/conflict-stderr-without-sarif.test
@@ -2,7 +2,7 @@
# NOT pass --sarif-conflicts-out=. Stderr cluster line is still emitted
# and drop-all still applies; no SARIF file is created at any path.
-# XFAIL: target={{.*}}-zos{{.*}}
+# XFAIL: system-zos
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# RUN: printf '%%80s' '' > %t.dir/foo.cpp
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/empty-input.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/empty-input.test
index 9818df738c07e4..4b738e67a111e5 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/empty-input.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/empty-input.test
@@ -2,7 +2,7 @@
# a valid TranslationUnitReplacements with an empty Replacements sequence.
# Per spec the MainSourceFile is the shared value when all inputs agree.
-# XFAIL: target={{.*}}-zos{{.*}}
+# XFAIL: system-zos
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# RUN: printf '%%80s' '' > %t.dir/foo.cpp
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/identical-overlap.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/identical-overlap.test
index b327a8db75ba40..3840d8a25cc447 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/identical-overlap.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/identical-overlap.test
@@ -2,7 +2,7 @@
# inputs collapse to one in the merged output. No "conflict:" line because
# this is a textbook dedup, not a conflict.
-# XFAIL: target={{.*}}-zos{{.*}}
+# XFAIL: system-zos
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# RUN: printf '%%80s' '' > %t.dir/foo.cpp
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/no-conflict-sarif-empty.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/no-conflict-sarif-empty.test
index e7172d710ed00d..b58e49aca34925 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/no-conflict-sarif-empty.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/no-conflict-sarif-empty.test
@@ -2,7 +2,7 @@
# with results: [] (empty array). The merged YAML retains both replacements.
# Tool exits 0; stderr contains no `conflict:` line.
-# XFAIL: target={{.*}}-zos{{.*}}
+# XFAIL: system-zos
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# RUN: printf '%%80s' '' > %t.dir/foo.cpp
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/non-overlapping.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/non-overlapping.test
index 33f56a13e25380..e72f59859443ca 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/non-overlapping.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/non-overlapping.test
@@ -2,7 +2,7 @@
# Conflicts are detected per-(file, offset) so disjoint offsets yield no
# tool-level "conflict:" line, and exit is 0.
-# XFAIL: target={{.*}}-zos{{.*}}
+# XFAIL: system-zos
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# Real source file required so groupReplacements doesn't drop the entries.
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/order-invariance.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/order-invariance.test
index 655cf6137504de..b158b675467443 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/order-invariance.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/order-invariance.test
@@ -3,7 +3,7 @@
# the deterministic sort in flattenFileChanges and the dedup-by-key
# logic don't inadvertently depend on input order.
-# XFAIL: target={{.*}}-zos{{.*}}
+# XFAIL: system-zos
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# RUN: printf '%%80s' '' > %t.dir/foo.cpp
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/pre-dedup-identical-non-zero-length.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/pre-dedup-identical-non-zero-length.test
index 94d27f817b77f2..9c4f497ba3fff0 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/pre-dedup-identical-non-zero-length.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/pre-dedup-identical-non-zero-length.test
@@ -3,7 +3,7 @@
# also covers this through library-side overlap detection; this test pins the
# pre-dedup pass's contract that the dedup applies regardless of length.
-# XFAIL: target={{.*}}-zos{{.*}}
+# XFAIL: system-zos
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# RUN: printf '%%80s' '' > %t.dir/foo.cpp
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/pre-dedup-zero-length-insert.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/pre-dedup-zero-length-insert.test
index b657df5719016b..27441d6edb084f 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/pre-dedup-zero-length-insert.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/pre-dedup-zero-length-insert.test
@@ -5,7 +5,7 @@
# where clang-apply-replacements' groupReplacements skipped dedup for plain
# TUReplacements and AtomicChange::replace stacked the duplicates.
-# XFAIL: target={{.*}}-zos{{.*}}
+# XFAIL: system-zos
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# RUN: printf '%%80s' '' > %t.dir/foo.cpp
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/range-overlap-cluster-of-three-sarif.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/range-overlap-cluster-of-three-sarif.test
index 8a6cad0730fc2f..40441807d408ba 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/range-overlap-cluster-of-three-sarif.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/range-overlap-cluster-of-three-sarif.test
@@ -13,7 +13,7 @@
## This is the regression guard for transitive merging — it cannot be
## exercised by any pairwise-only fixture.
-# XFAIL: target={{.*}}-zos{{.*}}
+# XFAIL: system-zos
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# RUN: printf '%%80s' '' > %t.dir/foo.cpp
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/range-overlap-conflict-sarif.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/range-overlap-conflict-sarif.test
index 836a2e1970eeb4..f79670f877d6e3 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/range-overlap-conflict-sarif.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/range-overlap-conflict-sarif.test
@@ -9,7 +9,7 @@
# This is the mandatory regression guard for the range-overlap cluster
# definition — it cannot be exercised by any same-offset fixture.
-# XFAIL: target={{.*}}-zos{{.*}}
+# XFAIL: system-zos
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# RUN: printf '%%80s' '' > %t.dir/foo.cpp
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/single-input-internal-conflict.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/single-input-internal-conflict.test
index c26ebbf6a075ee..9f48bf2dabca7c 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/single-input-internal-conflict.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/single-input-internal-conflict.test
@@ -3,7 +3,7 @@
# this as a within-input conflict and drops one; the tool reports the
# cluster on stderr and exits 0.
-# XFAIL: target={{.*}}-zos{{.*}}
+# XFAIL: system-zos
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# RUN: printf '%%80s' '' > %t.dir/foo.cpp
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/single-input.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/single-input.test
index 86d4553ac5e68a..9a8f05fa513e71 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/single-input.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/single-input.test
@@ -2,7 +2,7 @@
# "If exactly one input is given, the tool SHALL still produce a one-run
# merged document equivalent to that input."
-# XFAIL: target={{.*}}-zos{{.*}}
+# XFAIL: system-zos
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# RUN: printf '%%80s' '' > %t.dir/foo.cpp
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/three-input-all-conflict.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/three-input-all-conflict.test
index 0526a9996c062a..9b74feedb5ebed 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/three-input-all-conflict.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/three-input-all-conflict.test
@@ -4,7 +4,7 @@
# a "conflict:" line for the (file, offset) cluster with the full cluster
# size (3) and exits 0.
-# XFAIL: target={{.*}}-zos{{.*}}
+# XFAIL: system-zos
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# RUN: printf '%%80s' '' > %t.dir/foo.cpp
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/three-input-conflict-sarif.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/three-input-conflict-sarif.test
index acbfe8444fb650..918bb2533e16d7 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/three-input-conflict-sarif.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/three-input-conflict-sarif.test
@@ -1,7 +1,7 @@
# Three inputs all conflict pairwise at (foo.cpp, 10) — drop-all removes
# all three from the merged YAML; SARIF result lists three relatedLocations.
-# XFAIL: target={{.*}}-zos{{.*}}
+# XFAIL: system-zos
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# RUN: printf '%%80s' '' > %t.dir/foo.cpp
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/two-conflicts-different-offsets-sarif.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/two-conflicts-different-offsets-sarif.test
index 68a433c4ab2eb7..fd08981661acf1 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/two-conflicts-different-offsets-sarif.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/two-conflicts-different-offsets-sarif.test
@@ -3,7 +3,7 @@
# removes all four; SARIF has two results, ordered by (file, min-offset)
# ascending so the offset-10 cluster precedes the offset-30 cluster.
-# XFAIL: target={{.*}}-zos{{.*}}
+# XFAIL: system-zos
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# RUN: printf '%%80s' '' > %t.dir/foo.cpp
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/two-input-conflict-sarif.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/two-input-conflict-sarif.test
index 343c1f73dbab2b..85a3a3bb9a1d62 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/two-input-conflict-sarif.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/two-input-conflict-sarif.test
@@ -4,7 +4,7 @@
# given by --sarif-conflicts-out= containing one error-level result with
# two relatedLocations (one per dropped candidate).
-# XFAIL: target={{.*}}-zos{{.*}}
+# XFAIL: system-zos
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# RUN: printf '%%80s' '' > %t.dir/foo.cpp
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/two-input-conflict.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/two-input-conflict.test
index 23bb5d88d87c92..eb89efff9e2d01 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/two-input-conflict.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/two-input-conflict.test
@@ -4,7 +4,7 @@
# tool emits one "conflict:" cluster line for that (file, offset) with the
# full cluster size, and exits 0.
-# XFAIL: target={{.*}}-zos{{.*}}
+# XFAIL: system-zos
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# RUN: printf '%%80s' '' > %t.dir/foo.cpp
diff --git a/clang/test/ClangScanDeps/modules-pch-compatibility.c b/clang/test/ClangScanDeps/modules-pch-compatibility.c
index d300fa669c8411..4fb050e5dc274f 100644
--- a/clang/test/ClangScanDeps/modules-pch-compatibility.c
+++ b/clang/test/ClangScanDeps/modules-pch-compatibility.c
@@ -1,4 +1,4 @@
-// XFAIL: target={{.*}}-zos{{.*}}
+// XFAIL: system-zos
// RUN: rm -rf %t
// RUN: split-file %s %t
diff --git a/clang/test/ClangScanDeps/print-timing.c b/clang/test/ClangScanDeps/print-timing.c
index f17327b279bc3f..053d4dd52ef1d1 100644
--- a/clang/test/ClangScanDeps/print-timing.c
+++ b/clang/test/ClangScanDeps/print-timing.c
@@ -1,4 +1,4 @@
-// XFAIL: target={{.*}}-zos{{.*}}
+// XFAIL: system-zos
// RUN: rm -rf %t && mkdir %t
// RUN: split-file %s %t
diff --git a/clang/test/CodeGen/2007-04-14-FNoBuiltin.c b/clang/test/CodeGen/2007-04-14-FNoBuiltin.c
index 936ea03e78b68e..12173ca25a723e 100644
--- a/clang/test/CodeGen/2007-04-14-FNoBuiltin.c
+++ b/clang/test/CodeGen/2007-04-14-FNoBuiltin.c
@@ -1,4 +1,4 @@
-// XFAIL: target={{.*}}-zos{{.*}}
+// XFAIL: system-zos
// RUN: %clang_cc1 -emit-llvm %s -O2 -fno-builtin -o - | FileCheck %s
// RUN: %clang_cc1 -emit-llvm %s -O2 -fno-builtin-printf -o - | FileCheck %s
// Check that -fno-builtin is honored.
diff --git a/clang/test/CodeGen/builtin-rename.c b/clang/test/CodeGen/builtin-rename.c
index 54bdaed14b0cbd..bebe7586b33349 100644
--- a/clang/test/CodeGen/builtin-rename.c
+++ b/clang/test/CodeGen/builtin-rename.c
@@ -1,4 +1,4 @@
-// XFAIL: target={{.*}}-zos{{.*}}
+// XFAIL: system-zos
// RUN: %clang_cc1 %s -emit-llvm -o - | grep 'declare.*printf' | count 1
// PR3612
diff --git a/clang/test/CodeGen/libcalls-fno-builtin.c b/clang/test/CodeGen/libcalls-fno-builtin.c
index 3e908d2f2eeded..7941c621e46541 100644
--- a/clang/test/CodeGen/libcalls-fno-builtin.c
+++ b/clang/test/CodeGen/libcalls-fno-builtin.c
@@ -1,4 +1,4 @@
-// XFAIL: target={{.*}}-zos{{.*}}
+// XFAIL: system-zos
// RUN: %clang_cc1 -emit-llvm -fno-builtin -o - %s | FileCheck --check-prefixes=GLOBAL,CHECK %s
// RUN: %clang_cc1 -emit-llvm -fno-builtin-ceil -fno-builtin-copysign -fno-builtin-cos \
// RUN: -fno-builtin-fabs -fno-builtin-floor -fno-builtin-strcat -fno-builtin-strncat \
diff --git a/clang/test/CodeGen/nomathbuiltin.c b/clang/test/CodeGen/nomathbuiltin.c
index d9a82c634bc1e4..9c2d647253505b 100644
--- a/clang/test/CodeGen/nomathbuiltin.c
+++ b/clang/test/CodeGen/nomathbuiltin.c
@@ -1,4 +1,4 @@
-// XFAIL: target={{.*}}-zos{{.*}}
+// XFAIL: system-zos
// RUN: %clang_cc1 -fno-math-builtin -emit-llvm -o - %s | FileCheck %s
// Check that the -fno-math-builtin option for -cc1 is working properly.
diff --git a/clang/test/CodeGen/variable-array.c b/clang/test/CodeGen/variable-array.c
index 7d9229bcbdc5e8..9d979e7492cc0b 100644
--- a/clang/test/CodeGen/variable-array.c
+++ b/clang/test/CodeGen/variable-array.c
@@ -1,4 +1,4 @@
-// XFAIL: target={{.*}}-zos{{.*}}
+// XFAIL: system-zos
// RUN: %clang_cc1 -emit-llvm < %s | grep puts | count 4
int puts(const char *);
diff --git a/clang/test/CodeGenHipStdPar/select-accelerator-code-pass-ordering.cpp b/clang/test/CodeGenHipStdPar/select-accelerator-code-pass-ordering.cpp
index 83340d0a3a4e2b..4ea49de1a094a7 100644
--- a/clang/test/CodeGenHipStdPar/select-accelerator-code-pass-ordering.cpp
+++ b/clang/test/CodeGenHipStdPar/select-accelerator-code-pass-ordering.cpp
@@ -1,5 +1,5 @@
// REQUIRES: amdgpu-registered-target
-// XFAIL: target={{.*}}-zos{{.*}}
+// XFAIL: system-zos
// Test that the accelerator code selection pass only gets invoked after linking
// Ensure Pass HipStdParAcceleratorCodeSelectionPass is not invoked in PreLink.
diff --git a/clang/test/CoverageMapping/coroutine.cpp b/clang/test/CoverageMapping/coroutine.cpp
index 3e8b4afde2fc23..6e564865108698 100644
--- a/clang/test/CoverageMapping/coroutine.cpp
+++ b/clang/test/CoverageMapping/coroutine.cpp
@@ -1,4 +1,4 @@
-// XFAIL: target={{.*}}-zos{{.*}}
+// XFAIL: system-zos
// RUN: %clang_cc1 -mllvm -emptyline-comment-coverage=false -triple x86_64-unknown-linux-gnu -std=c++20 -emit-llvm -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping %s -o - | FileCheck %s
namespace std {
diff --git a/clang/test/CoverageMapping/mcdc-error-conditions.cpp b/clang/test/CoverageMapping/mcdc-error-conditions.cpp
index a551b4188e2a44..8c0cc01509c379 100644
--- a/clang/test/CoverageMapping/mcdc-error-conditions.cpp
+++ b/clang/test/CoverageMapping/mcdc-error-conditions.cpp
@@ -1,4 +1,4 @@
-// XFAIL: target={{.*}}-zos{{.*}}
+// XFAIL: system-zos
// RUN: %clang_cc1 -triple %itanium_abi_triple -std=c++11 -fcoverage-mcdc -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only %s 2>&1| FileCheck %s --check-prefixes=CHECK,COND7,TV
// RUN: %clang_cc1 -fmcdc-max-test-vectors=8 -triple %itanium_abi_triple -std=c++11 -fcoverage-mcdc -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only %s 2>&1| FileCheck %s --check-prefixes=CHECK,COND7,TV
diff --git a/clang/test/Driver/amdgpu-hip-system-arch.c b/clang/test/Driver/amdgpu-hip-system-arch.c
index 0949159d460923..78e9f3eb7fbda9 100644
--- a/clang/test/Driver/amdgpu-hip-system-arch.c
+++ b/clang/test/Driver/amdgpu-hip-system-arch.c
@@ -1,6 +1,6 @@
// Needs chmod
// UNSUPPORTED: system-windows
-// XFAIL: target={{.*}}-zos{{.*}}
+// XFAIL: system-zos
// RUN: mkdir -p %t
// RUN: cp %S/Inputs/amdgpu-arch/amdgpu_arch_fail %t/
diff --git a/clang/test/Driver/crash-diagnostics-tar.c b/clang/test/Driver/crash-diagnostics-tar.c
index 97ec95f3e1a71f..9567ce0b72979b 100644
--- a/clang/test/Driver/crash-diagnostics-tar.c
+++ b/clang/test/Driver/crash-diagnostics-tar.c
@@ -1,5 +1,5 @@
// REQUIRES: backtrace
-// XFAIL: target={{.*}}-zos{{.*}}
+// XFAIL: system-zos
// RUN: export LSAN_OPTIONS=detect_leaks=0
// RUN: rm -rf %t && mkdir %t
// RUN: cd %t
diff --git a/clang/test/Driver/no-objc-arr.m b/clang/test/Driver/no-objc-arr.m
index a5f523e1b42096..3a519abd70409f 100644
--- a/clang/test/Driver/no-objc-arr.m
+++ b/clang/test/Driver/no-objc-arr.m
@@ -1,4 +1,4 @@
-// XFAIL: target={{.*}}-zos{{.*}}
+// XFAIL: system-zos
// RUN: %clang -Werror -fobjc-arc -fsyntax-only -fno-objc-arc -Xclang -verify %s
// expected-no-diagnostics
diff --git a/clang/test/Driver/nostdincxx.cpp b/clang/test/Driver/nostdincxx.cpp
index 73ebe7947ea63b..24db38a5f21aa1 100644
--- a/clang/test/Driver/nostdincxx.cpp
+++ b/clang/test/Driver/nostdincxx.cpp
@@ -8,4 +8,4 @@
// MSVC, PS4, PS5 have C++ headers in the same directory as C headers.
// UNSUPPORTED: ms-sdk, target={{.*-(ps4|ps5)}}
-// XFAIL: target={{.*}}-zos{{.*}}
+// XFAIL: system-zos
diff --git a/clang/test/Driver/nvptx-cuda-system-arch.c b/clang/test/Driver/nvptx-cuda-system-arch.c
index dd6c0646272102..2f4f6d1c073d93 100644
--- a/clang/test/Driver/nvptx-cuda-system-arch.c
+++ b/clang/test/Driver/nvptx-cuda-system-arch.c
@@ -1,5 +1,5 @@
// UNSUPPORTED: system-windows
-// XFAIL: target={{.*}}-zos{{.*}}
+// XFAIL: system-zos
// RUN: mkdir -p %t
// RUN: cp %S/Inputs/nvptx-arch/nvptx_arch_fail %t/
diff --git a/clang/test/Driver/openmp-system-arch.c b/clang/test/Driver/openmp-system-arch.c
index 464d93dfa9489e..a24799fbab35b7 100644
--- a/clang/test/Driver/openmp-system-arch.c
+++ b/clang/test/Driver/openmp-system-arch.c
@@ -1,6 +1,6 @@
// Needs chmod
// UNSUPPORTED: system-windows
-// XFAIL: target={{.*}}-zos{{.*}}
+// XFAIL: system-zos
// RUN: mkdir -p %t
// RUN: cp %S/Inputs/amdgpu-arch/amdgpu_arch_fail %t/
diff --git a/clang/test/ExtractAPI/invalid_utf8_doc_comment.c b/clang/test/ExtractAPI/invalid_utf8_doc_comment.c
index 0bfa355fa82b1e..c75b780a34bfd9 100644
--- a/clang/test/ExtractAPI/invalid_utf8_doc_comment.c
+++ b/clang/test/ExtractAPI/invalid_utf8_doc_comment.c
@@ -1,4 +1,4 @@
-// XFAIL: target={{.*}}-zos{{.*}}
+// XFAIL: system-zos
// RUN: rm -rf %t
// RUN: %clang_cc1 -extract-api --pretty-sgf -verify \
// RUN: -triple arm64-apple-macosx -x c-header %s -o %t/output.symbols.json
diff --git a/clang/test/Frontend/ir-support.c b/clang/test/Frontend/ir-support.c
index 3c819cf21d68dc..5feacf6c7b1b0e 100644
--- a/clang/test/Frontend/ir-support.c
+++ b/clang/test/Frontend/ir-support.c
@@ -4,7 +4,7 @@
// We strip differing '.file' directives before comparing.
// Reference output:
-// XFAIL: target={{.*}}-zos{{.*}}
+// XFAIL: system-zos
// RUN: %clang_cc1 -S -o - %s | grep -v '\.file' > %t.s
// LLVM bitcode:
diff --git a/clang/test/Index/preamble-reparse-changed-module.m b/clang/test/Index/preamble-reparse-changed-module.m
index 02e9c0c71be515..851de3c2f3e03a 100644
--- a/clang/test/Index/preamble-reparse-changed-module.m
+++ b/clang/test/Index/preamble-reparse-changed-module.m
@@ -1,5 +1,5 @@
// UNSUPPORTED: system-windows
-// XFAIL: target={{.*}}-zos{{.*}}
+// XFAIL: system-zos
// RUN: rm -rf %t
// RUN: mkdir -p %t/mod
diff --git a/clang/test/Index/record-completion-invocation.c b/clang/test/Index/record-completion-invocation.c
index 40dc09dc25109b..df18764f88acb1 100644
--- a/clang/test/Index/record-completion-invocation.c
+++ b/clang/test/Index/record-completion-invocation.c
@@ -1,4 +1,4 @@
-// XFAIL: target={{.*}}-zos{{.*}}
+// XFAIL: system-zos
// RUN: export LSAN_OPTIONS=detect_leaks=0
// RUN: rm -rf %t
// RUN: mkdir %t
diff --git a/clang/test/Index/record-parsing-invocation.c b/clang/test/Index/record-parsing-invocation.c
index 96ccfadadb868c..f63a0f92d6fd02 100644
--- a/clang/test/Index/record-parsing-invocation.c
+++ b/clang/test/Index/record-parsing-invocation.c
@@ -1,4 +1,4 @@
-// XFAIL: target={{.*}}-zos{{.*}}
+// XFAIL: system-zos
// RUN: export LSAN_OPTIONS=detect_leaks=0
// RUN: rm -rf %t
// RUN: mkdir %t
diff --git a/clang/test/InstallAPI/binary-attributes.test b/clang/test/InstallAPI/binary-attributes.test
index e79e5acd89c3fe..cf593544fa6b54 100644
--- a/clang/test/InstallAPI/binary-attributes.test
+++ b/clang/test/InstallAPI/binary-attributes.test
@@ -1,4 +1,4 @@
-; XFAIL: target={{.*}}-zos{{.*}}
+; XFAIL: system-zos
; RUN: rm -rf %t
; RUN: split-file %s %t
; RUN: mkdir -p %t/System/Library/Frameworks
diff --git a/clang/test/InstallAPI/reexport-with-linker-symbols.test b/clang/test/InstallAPI/reexport-with-linker-symbols.test
index 2dcb2faed9a77e..f6b8b6a61a87f4 100644
--- a/clang/test/InstallAPI/reexport-with-linker-symbols.test
+++ b/clang/test/InstallAPI/reexport-with-linker-symbols.test
@@ -1,4 +1,4 @@
-; XFAIL: target={{.*}}-zos{{.*}}
+; XFAIL: system-zos
; RUN: rm -rf %t
; RUN: split-file %s %t
diff --git a/clang/test/InstallAPI/reexported-frameworks.test b/clang/test/InstallAPI/reexported-frameworks.test
index ad0005451e365d..c189054e5a56ec 100644
--- a/clang/test/InstallAPI/reexported-frameworks.test
+++ b/clang/test/InstallAPI/reexported-frameworks.test
@@ -1,4 +1,4 @@
-; XFAIL: target={{.*}}-zos{{.*}}
+; XFAIL: system-zos
; RUN: rm -rf %t
; RUN: split-file %s %t
; RUN: sed -e "s|DSTROOT|%/t|g" %t/inputs.json.in > %t/inputs.json
diff --git a/clang/test/Modules/ASTSignature.c b/clang/test/Modules/ASTSignature.c
index 5a45cbfbbdea33..0816a23daf06c3 100644
--- a/clang/test/Modules/ASTSignature.c
+++ b/clang/test/Modules/ASTSignature.c
@@ -1,4 +1,4 @@
-// XFAIL: target={{.*}}-zos{{.*}}
+// XFAIL: system-zos
// RUN: rm -rf %t
// RUN: %clang_cc1 -iquote %S/Inputs/ASTHash/ -fsyntax-only \
// RUN: -fmodules -fimplicit-module-maps -fmodules-strict-context-hash \
diff --git a/clang/test/Modules/class-instantiate-no-change-02.cppm b/clang/test/Modules/class-instantiate-no-change-02.cppm
index 03bb5f8bbe7dd7..78178bc21c25ae 100644
--- a/clang/test/Modules/class-instantiate-no-change-02.cppm
+++ b/clang/test/Modules/class-instantiate-no-change-02.cppm
@@ -1,4 +1,4 @@
-// XFAIL: target={{.*}}-zos{{.*}}
+// XFAIL: system-zos
// RUN: rm -rf %t
// RUN: mkdir -p %t
// RUN: split-file %s %t
diff --git a/clang/test/Modules/class-instantiate-no-change.cppm b/clang/test/Modules/class-instantiate-no-change.cppm
index bf7357028c73cf..b8a97d3927099f 100644
--- a/clang/test/Modules/class-instantiate-no-change.cppm
+++ b/clang/test/Modules/class-instantiate-no-change.cppm
@@ -1,4 +1,4 @@
-// XFAIL: target={{.*}}-zos{{.*}}
+// XFAIL: system-zos
// RUN: rm -rf %t
// RUN: mkdir -p %t
// RUN: split-file %s %t
diff --git a/clang/test/Modules/cxx20-fatal-module-loader-error.cpp b/clang/test/Modules/cxx20-fatal-module-loader-error.cpp
index d022620f107c89..4100724faa8c7f 100644
--- a/clang/test/Modules/cxx20-fatal-module-loader-error.cpp
+++ b/clang/test/Modules/cxx20-fatal-module-loader-error.cpp
@@ -1,4 +1,4 @@
-// XFAIL: target={{.*}}-zos{{.*}}
+// XFAIL: system-zos
// RUN: rm -rf %t
// RUN: mkdir %t
// RUN: touch %t/A.pcm
diff --git a/clang/test/Modules/diagnostic-options-out-of-date.m b/clang/test/Modules/diagnostic-options-out-of-date.m
index 707998212bbb26..ccf2998ea6a7dc 100644
--- a/clang/test/Modules/diagnostic-options-out-of-date.m
+++ b/clang/test/Modules/diagnostic-options-out-of-date.m
@@ -1,4 +1,4 @@
-// XFAIL: target={{.*}}-zos{{.*}}
+// XFAIL: system-zos
// RUN: rm -rf %t
// Build A.pcm
// RUN: %clang_cc1 -Werror -Wno-conversion -fmodules-cache-path=%t -fmodules -fimplicit-module-maps -I %S/Inputs %s -fmodules-disable-diagnostic-validation
diff --git a/clang/test/Modules/double-quotes.m b/clang/test/Modules/double-quotes.m
index 46534660f9720a..de9467529b6f02 100644
--- a/clang/test/Modules/double-quotes.m
+++ b/clang/test/Modules/double-quotes.m
@@ -1,4 +1,4 @@
-// XFAIL: target={{.*}}-zos{{.*}}
+// XFAIL: system-zos
// RUN: rm -rf %t
// RUN: mkdir %t
diff --git a/clang/test/Modules/framework-public-includes-private.m b/clang/test/Modules/framework-public-includes-private.m
index 420dd87a1bfb76..349df13111271f 100644
--- a/clang/test/Modules/framework-public-includes-private.m
+++ b/clang/test/Modules/framework-public-includes-private.m
@@ -1,4 +1,4 @@
-// XFAIL: target={{.*}}-zos{{.*}}
+// XFAIL: system-zos
// RUN: rm -rf %t
// RUN: mkdir %t
diff --git a/clang/test/Modules/modules-reduced-bmi.cppm b/clang/test/Modules/modules-reduced-bmi.cppm
index 54445f38d4c352..c3b1698272d50b 100644
--- a/clang/test/Modules/modules-reduced-bmi.cppm
+++ b/clang/test/Modules/modules-reduced-bmi.cppm
@@ -1,4 +1,4 @@
-// XFAIL: target={{.*}}-zos{{.*}}
+// XFAIL: system-zos
// RUN: rm -rf %t
// RUN: mkdir -p %t
// RUN: split-file %s %t
diff --git a/clang/test/Modules/no-external-type-id.cppm b/clang/test/Modules/no-external-type-id.cppm
index 41a65032fbbdb5..cf9182569aa9e6 100644
--- a/clang/test/Modules/no-external-type-id.cppm
+++ b/clang/test/Modules/no-external-type-id.cppm
@@ -1,6 +1,6 @@
// Testing that we won't record the type ID from external modules.
//
-// XFAIL: target={{.*}}-zos{{.*}}
+// XFAIL: system-zos
// RUN: rm -rf %t
// RUN: split-file %s %t
// RUN: cd %t
diff --git a/clang/test/Modules/no-transitive-decl-change-2.cppm b/clang/test/Modules/no-transitive-decl-change-2.cppm
index 56053a642335bc..16041dc7c63773 100644
--- a/clang/test/Modules/no-transitive-decl-change-2.cppm
+++ b/clang/test/Modules/no-transitive-decl-change-2.cppm
@@ -1,6 +1,6 @@
// Test that adding a new unused decl within reduced BMI may not produce a transitive change.
//
-// XFAIL: target={{.*}}-zos{{.*}}
+// XFAIL: system-zos
// RUN: rm -rf %t
// RUN: split-file %s %t
//
diff --git a/clang/test/Modules/no-transitive-decl-change-4.cppm b/clang/test/Modules/no-transitive-decl-change-4.cppm
index f06dc18d405222..0fe8b54037116c 100644
--- a/clang/test/Modules/no-transitive-decl-change-4.cppm
+++ b/clang/test/Modules/no-transitive-decl-change-4.cppm
@@ -1,6 +1,6 @@
// Test that adding a new unused decl within reduced BMI may not produce a transitive change.
//
-// XFAIL: target={{.*}}-zos{{.*}}
+// XFAIL: system-zos
// RUN: rm -rf %t
// RUN: split-file %s %t
//
diff --git a/clang/test/Modules/no-transitive-decls-change.cppm b/clang/test/Modules/no-transitive-decls-change.cppm
index 4807a297fd39ac..66a482bd689abb 100644
--- a/clang/test/Modules/no-transitive-decls-change.cppm
+++ b/clang/test/Modules/no-transitive-decls-change.cppm
@@ -1,7 +1,7 @@
// Testing that changing a declaration in an unused module file won't change
// the BMI of the current module file.
//
-// XFAIL: target={{.*}}-zos{{.*}}
+// XFAIL: system-zos
// RUN: rm -rf %t
// RUN: split-file %s %t
//
diff --git a/clang/test/Modules/no-transitive-identifier-change.cppm b/clang/test/Modules/no-transitive-identifier-change.cppm
index bc7bd3a3bc7339..53158af1e6caae 100644
--- a/clang/test/Modules/no-transitive-identifier-change.cppm
+++ b/clang/test/Modules/no-transitive-identifier-change.cppm
@@ -1,7 +1,7 @@
// Testing that adding an new identifier in an unused module file won't change
// the BMI of the current module file.
//
-// XFAIL: target={{.*}}-zos{{.*}}
+// XFAIL: system-zos
// RUN: rm -rf %t
// RUN: split-file %s %t
//
diff --git a/clang/test/Modules/no-transitive-source-location-change-2.cppm b/clang/test/Modules/no-transitive-source-location-change-2.cppm
index 15f36428b4bc1e..3199ba74cc0591 100644
--- a/clang/test/Modules/no-transitive-source-location-change-2.cppm
+++ b/clang/test/Modules/no-transitive-source-location-change-2.cppm
@@ -1,7 +1,7 @@
// Testing that adding a new line in a module interface unit won't cause the BMI
// of consuming module unit changes.
//
-// XFAIL: target={{.*}}-zos{{.*}}
+// XFAIL: system-zos
// RUN: rm -rf %t
// RUN: split-file %s %t
//
diff --git a/clang/test/Modules/no-transitive-source-location-change.cppm b/clang/test/Modules/no-transitive-source-location-change.cppm
index 596bd47384057e..e8c914987c83e5 100644
--- a/clang/test/Modules/no-transitive-source-location-change.cppm
+++ b/clang/test/Modules/no-transitive-source-location-change.cppm
@@ -1,7 +1,7 @@
// Testing that adding a new line in a module interface unit won't cause the BMI
// of consuming module unit changes.
//
-// XFAIL: target={{.*}}-zos{{.*}}
+// XFAIL: system-zos
// RUN: rm -rf %t
// RUN: split-file %s %t
//
diff --git a/clang/test/Modules/no-transitive-type-change.cppm b/clang/test/Modules/no-transitive-type-change.cppm
index 13008b2593716d..bfbc1a9da4e088 100644
--- a/clang/test/Modules/no-transitive-type-change.cppm
+++ b/clang/test/Modules/no-transitive-type-change.cppm
@@ -1,7 +1,7 @@
// Testing that changing a type in an unused module file won't change
// the BMI of the current module file.
//
-// XFAIL: target={{.*}}-zos{{.*}}
+// XFAIL: system-zos
// RUN: rm -rf %t
// RUN: split-file %s %t
//
diff --git a/clang/test/Modules/prune-non-affecting-module-map-files-textual.c b/clang/test/Modules/prune-non-affecting-module-map-files-textual.c
index b18a1efffad492..917793aaa9f958 100644
--- a/clang/test/Modules/prune-non-affecting-module-map-files-textual.c
+++ b/clang/test/Modules/prune-non-affecting-module-map-files-textual.c
@@ -1,7 +1,7 @@
// This test checks that a module map with a textual header can be marked as
// non-affecting.
-// XFAIL: target={{.*}}-zos{{.*}}
+// XFAIL: system-zos
// RUN: rm -rf %t && mkdir %t
// RUN: split-file %s %t
diff --git a/clang/test/Modules/prune-non-affecting-module-map-files.m b/clang/test/Modules/prune-non-affecting-module-map-files.m
index 8895b42f940b07..1cff7c13f0cff3 100644
--- a/clang/test/Modules/prune-non-affecting-module-map-files.m
+++ b/clang/test/Modules/prune-non-affecting-module-map-files.m
@@ -1,7 +1,7 @@
// Check that the presence of non-affecting module map files does not affect the
// contents of PCM files.
-// XFAIL: target={{.*}}-zos{{.*}}
+// XFAIL: system-zos
// RUN: rm -rf %t && mkdir %t
// RUN: split-file %s %t
diff --git a/clang/test/Modules/stress-objc.m b/clang/test/Modules/stress-objc.m
index ef628e21ce0ea3..0cc5cab062fb8f 100644
--- a/clang/test/Modules/stress-objc.m
+++ b/clang/test/Modules/stress-objc.m
@@ -1,4 +1,4 @@
-// XFAIL: target={{.*}}-zos{{.*}}
+// XFAIL: system-zos
// RUN: cd %S
// RUN: %clang_cc1 -emit-pch -x objective-c-header %s -o %t_c00.pch -fno-pch-timestamp
diff --git a/clang/test/Modules/stress1.cpp b/clang/test/Modules/stress1.cpp
index 8563b8f789f4e7..14ac6fa965d2ad 100644
--- a/clang/test/Modules/stress1.cpp
+++ b/clang/test/Modules/stress1.cpp
@@ -1,4 +1,4 @@
-// XFAIL: target={{.*}}-zos{{.*}}
+// XFAIL: system-zos
// RUN: rm -rf %t
// RUN: cd %S
//
diff --git a/clang/test/PCH/pragma-redefine-extname.c b/clang/test/PCH/pragma-redefine-extname.c
index baee0a6cc30335..6f50b39a6c2cd7 100644
--- a/clang/test/PCH/pragma-redefine-extname.c
+++ b/clang/test/PCH/pragma-redefine-extname.c
@@ -1,5 +1,5 @@
/// Test this without pch.
-// XFAIL: target={{.*}}-zos{{.*}}
+// XFAIL: system-zos
// RUN: %clang_cc1 -triple=x86_64-unknown-linux -include %S/pragma-redefine-extname.h %s -verify -emit-llvm -o - | FileCheck %s
/// Test with pch.
diff --git a/clang/test/Preprocessor/SOURCE_DATE_EPOCH.c b/clang/test/Preprocessor/SOURCE_DATE_EPOCH.c
index 44384fe784c15e..aa1ee51f2b6704 100644
--- a/clang/test/Preprocessor/SOURCE_DATE_EPOCH.c
+++ b/clang/test/Preprocessor/SOURCE_DATE_EPOCH.c
@@ -1,4 +1,4 @@
-// XFAIL: target={{.*}}-zos{{.*}}
+// XFAIL: system-zos
// RUN: %clang_cc1 -source-date-epoch 0 -E %s | FileCheck %s --check-prefix=19700101
// 19700101: const char date[] = "Jan 1 1970";
diff --git a/clang/test/Tooling/clang-diff-ast.cpp b/clang/test/Tooling/clang-diff-ast.cpp
index 51b85f33ad9a9a..0e6365467d1f56 100644
--- a/clang/test/Tooling/clang-diff-ast.cpp
+++ b/clang/test/Tooling/clang-diff-ast.cpp
@@ -1,4 +1,4 @@
-// XFAIL: target={{.*}}-zos{{.*}}
+// XFAIL: system-zos
// RUN: clang-diff -ast-dump %s -- -std=c++11 | FileCheck %s
diff --git a/clang/test/Tooling/clang-diff-basic.cpp b/clang/test/Tooling/clang-diff-basic.cpp
index 3fa80685db2395..3fa0d224fecd32 100644
--- a/clang/test/Tooling/clang-diff-basic.cpp
+++ b/clang/test/Tooling/clang-diff-basic.cpp
@@ -1,4 +1,4 @@
-// XFAIL: target={{.*}}-zos{{.*}}
+// XFAIL: system-zos
// RUN: clang-diff -dump-matches %S/Inputs/clang-diff-basic-src.cpp %s -- | FileCheck %s
// CHECK: Match TranslationUnitDecl{{.*}} to TranslationUnitDecl
diff --git a/clang/test/Tooling/clang-diff-html.test b/clang/test/Tooling/clang-diff-html.test
index e364dde5f98e3c..98f3601a299869 100644
--- a/clang/test/Tooling/clang-diff-html.test
+++ b/clang/test/Tooling/clang-diff-html.test
@@ -1,4 +1,4 @@
-XFAIL: target={{.*}}-zos{{.*}}
+XFAIL: system-zos
RUN: clang-diff -html %S/Inputs/clang-diff-basic-src.cpp %S/clang-diff-basic.cpp -- | FileCheck %s
CHECK: <pre><div id='L' class='code'><span id='L0' tid='R0' title='TranslationUnitDecl
>From e252d1bb383ae731136087bd207a1821f0ac68e7 Mon Sep 17 00:00:00 2001
From: Sean Perry <perry at ca.ibm.com>
Date: Tue, 20 Oct 2026 23:12:02 -0400
Subject: [PATCH 04/17] Add changes for z/OS
---
...xx1z-class-template-argument-deduction.cpp | 3 ++
clang/test/Parser/cxx2c-pack-indexing.cpp | 3 ++
clang/test/Sema/init.c | 3 ++
.../attr-require-constant-initialization.cpp | 43 +++++++++++++++++--
clang/test/SemaCXX/auto-cxx0x.cpp | 3 ++
...xx1z-class-template-argument-deduction.cpp | 3 ++
clang/test/SemaCXX/no_destroy.cpp | 12 ++++++
7 files changed, 66 insertions(+), 4 deletions(-)
diff --git a/clang/test/Parser/cxx1z-class-template-argument-deduction.cpp b/clang/test/Parser/cxx1z-class-template-argument-deduction.cpp
index b1320a8924f734..963b5cc33635ba 100644
--- a/clang/test/Parser/cxx1z-class-template-argument-deduction.cpp
+++ b/clang/test/Parser/cxx1z-class-template-argument-deduction.cpp
@@ -99,6 +99,9 @@ namespace stmt {
A local = 0;
static A local_static = 0;
static thread_local A thread_local_static = 0;
+#ifdef __MVS__
+ // expected-error at -2 {{thread-local storage is not supported for the current target}}
+#endif
if (A a = 0) {}
if (A a = 0; a) {}
switch (A a = 0) {} // expected-warning {{no case matching constant switch condition '0'}}
diff --git a/clang/test/Parser/cxx2c-pack-indexing.cpp b/clang/test/Parser/cxx2c-pack-indexing.cpp
index 79069a86ea7069..85e53530e57a10 100644
--- a/clang/test/Parser/cxx2c-pack-indexing.cpp
+++ b/clang/test/Parser/cxx2c-pack-indexing.cpp
@@ -40,6 +40,9 @@ struct SS : T...[1] {
const T...[0] f(T...[0] && p) noexcept((T...[0])0) {
T...[0] (*test)(const volatile T...[0]**);
thread_local T...[0] d;
+#ifdef __MVS__
+ // expected-error at -2 {{thread-local storage is not supported for the current target}}
+#endif
[[maybe_unused]] T...[0] a = p;
auto ptr = new T...[0](0);
(*ptr).~T...[0]();
diff --git a/clang/test/Sema/init.c b/clang/test/Sema/init.c
index 32a0a94a8b8a61..041d673793b1d9 100644
--- a/clang/test/Sema/init.c
+++ b/clang/test/Sema/init.c
@@ -246,9 +246,12 @@ void GH69213(void) {
// GH198767
void GH198767(void) {
+// FIXME: remove MVS guard when TLS is supported on z/OS wyvern_dev branch
+#ifndef __MVS__
static __thread static char buffer[128] = {{{}, 0}}; // expected-warning {{duplicate 'static' declaration specifier}} \
expected-warning {{too many braces around scalar initializer}} \
expected-warning {{excess elements in scalar initializer}}
+#endif
}
struct GH207566 {};
diff --git a/clang/test/SemaCXX/attr-require-constant-initialization.cpp b/clang/test/SemaCXX/attr-require-constant-initialization.cpp
index b1736ea7a3ebe5..57c8f52fa8fe52 100644
--- a/clang/test/SemaCXX/attr-require-constant-initialization.cpp
+++ b/clang/test/SemaCXX/attr-require-constant-initialization.cpp
@@ -77,6 +77,9 @@ const int glvalue_int2 = ReturnInt();
ATTR const int &glvalue_ref ATTR = glvalue_int;
ATTR const int &glvalue_ref2 ATTR = glvalue_int2;
ATTR __thread const int &glvalue_ref_tl = glvalue_int;
+#ifdef __MVS__
+ // expected-error at -2 {{thread-local storage is not supported for the current target}}
+#endif
void test_basic_start_static_2_1(void) {
const int non_global = 42;
@@ -128,7 +131,13 @@ struct TT1 {
ATTR static const int &subobj_init;
#if __cplusplus >= 201103L
ATTR static thread_local const int &tl_glvalue_init;
- ATTR static thread_local const int &tl_temp_init; // expected-note {{required by 'require_constant_initialization' attribute here}}
+ ATTR static thread_local const int &tl_temp_init;
+#ifdef __MVS__
+ // expected-error at -3 {{thread-local storage is not supported for the current target}}
+ // expected-error at -3 {{thread-local storage is not supported for the current target}}
+#else
+ // expected-note at -5 {{required by 'require_constant_initialization' attribute here}}
+#endif
#endif
};
const int &TT1::glvalue_init = glvalue_int;
@@ -136,9 +145,15 @@ const int &TT1::temp_init = 42;
const int &TT1::subobj_init = PODType().value;
#if __cplusplus >= 201103L
thread_local const int &TT1::tl_glvalue_init = glvalue_int;
-thread_local const int &TT1::tl_temp_init = 42; // expected-error {{variable does not have a constant initializer}}
-// expected-note at -1 {{reference to temporary is not a constant expression}}
-// expected-note at -2 {{temporary created here}}
+thread_local const int &TT1::tl_temp_init = 42;
+#ifdef __MVS__
+ // expected-error at -3 {{thread-local storage is not supported for the current target}}
+ // expected-error at -3 {{thread-local storage is not supported for the current target}}
+#else
+ // expected-error at -5 {{variable does not have a constant initializer}}
+ // expected-note at -6 {{reference to temporary is not a constant expression}}
+ // expected-note at -7 {{temporary created here}}
+#endif
#endif
// [basic.start.static]p2.2
@@ -172,6 +187,10 @@ void test_basic_start_static_2_2(void) {
// expected-note at -1 {{required by 'require_constant_initialization' attribute here}}
// expected-note at -2 {{non-constexpr function 'ReturnInt' cannot be used in a constant expression}}
ATTR thread_local LitType tls = 42;
+#ifdef __MVS__
+ // expected-error at -2 {{thread-local storage is not supported for the current target}}
+ // expected-error at -3 {{'require_constant_initialization' attribute only applies to global variables}}
+#endif
#endif
}
@@ -213,12 +232,18 @@ ATTR LitType lit_ctor;
ATTR LitType lit_ctor2{};
ATTR LitType lit_ctor3 = {};
ATTR __thread LitType lit_ctor_tl = {};
+#ifdef __MVS__
+ // expected-error at -2 {{thread-local storage is not supported for the current target}}
+#endif
#if __cplusplus >= 201402L
ATTR NonLit nl_ctor;
ATTR NonLit nl_ctor2{};
ATTR NonLit nl_ctor3 = {};
ATTR thread_local NonLit nl_ctor_tl = {};
+#ifdef __MVS__
+ // expected-error at -2 {{thread-local storage is not supported for the current target}}
+#endif
ATTR StoresNonLit snl;
#else
ATTR NonLit nl_ctor; // expected-error {{variable does not have a constant initializer}}
@@ -233,6 +258,9 @@ ATTR NonLit nl_ctor3 = {}; // expected-error {{variable does not have a constant
ATTR thread_local NonLit nl_ctor_tl = {}; // expected-error {{variable does not have a constant initializer}}
// expected-note at -1 {{required by 'require_constant_initialization' attribute here}}
// expected-note at -2 {{non-constexpr constructor 'NonLit' cannot be used in a constant expression}}
+#ifdef __MVS__
+ // expected-error at -4 {{thread-local storage is not supported for the current target}}
+#endif
ATTR StoresNonLit snl; // expected-error {{variable does not have a constant initializer}}
// expected-note at -1 {{required by 'require_constant_initialization' attribute here}}
// expected-note at -2 {{non-constexpr constructor 'StoresNonLit' cannot be used in a constant expression}}
@@ -254,6 +282,10 @@ void test_basic_start_static_2_3(void) {
ATTR static int static_local2; // zero-initialization takes place
#if __cplusplus >= 201103L
ATTR thread_local int tl_local = 42;
+#ifdef __MVS__
+ // expected-error at -2 {{thread-local storage is not supported for the current target}}
+ // expected-error at -3 {{'require_constant_initialization' attribute only applies to global variables}}
+#endif
#endif
}
@@ -276,6 +308,9 @@ ATTR int brace_init = {};
#endif
ATTR __thread int tl_init = 0;
+#ifdef __MVS__
+ // expected-error at -2 {{thread-local storage is not supported for the current target}}
+#endif
typedef const char *StrType;
#if __cplusplus >= 201103L
diff --git a/clang/test/SemaCXX/auto-cxx0x.cpp b/clang/test/SemaCXX/auto-cxx0x.cpp
index f429bebb9941a4..d878d3c39b46de 100644
--- a/clang/test/SemaCXX/auto-cxx0x.cpp
+++ b/clang/test/SemaCXX/auto-cxx0x.cpp
@@ -8,6 +8,9 @@ void f() {
typedef auto PR25449(); // expected-error {{'auto' not allowed in typedef}}
thread_local auto x; // expected-error {{requires an initializer}}
+#ifdef __MVS__
+// expected-error at -2 {{thread-local storage is not supported for the current target}}
+#endif
void g() {
[](auto){}(0);
diff --git a/clang/test/SemaCXX/cxx1z-class-template-argument-deduction.cpp b/clang/test/SemaCXX/cxx1z-class-template-argument-deduction.cpp
index 204dd9b077b938..a6c868b8623c4d 100644
--- a/clang/test/SemaCXX/cxx1z-class-template-argument-deduction.cpp
+++ b/clang/test/SemaCXX/cxx1z-class-template-argument-deduction.cpp
@@ -559,6 +559,9 @@ namespace PR45124 {
// deduction guide 'template<typename T> y(x = x()) -> Y<T>;' leaves behind a
// pending cleanup.
__thread b g;
+#ifdef __MVS__
+ // expected-error at -2 {{thread-local storage is not supported for the current target}}
+#endif
}
namespace PR47175 {
diff --git a/clang/test/SemaCXX/no_destroy.cpp b/clang/test/SemaCXX/no_destroy.cpp
index 1ec994cd73ca56..fcff4dd310c838 100644
--- a/clang/test/SemaCXX/no_destroy.cpp
+++ b/clang/test/SemaCXX/no_destroy.cpp
@@ -11,13 +11,22 @@ private: ~SecretDestructor(); // expected-note + {{private}}
SecretDestructor sd1; // all-dtors-error{{private}}
thread_local SecretDestructor sd2; // thread-local-dtors-error{{private}}
+#ifdef __MVS__
+ // expected-error at -2 {{thread-local storage is not supported for the current target}}
+#endif
void locals() {
static SecretDestructor sd3; // all-dtors-error{{private}}
thread_local SecretDestructor sd4; // thread-local-dtors-error{{private}}
+#ifdef __MVS__
+ // expected-error at -2 {{thread-local storage is not supported for the current target}}
+#endif
}
[[clang::always_destroy]] SecretDestructor sd6; // expected-error{{private}}
[[clang::always_destroy]] thread_local SecretDestructor sd7; // expected-error{{private}}
+#ifdef __MVS__
+ // expected-error at -2 {{thread-local storage is not supported for the current target}}
+#endif
[[clang::no_destroy]] SecretDestructor sd8;
@@ -45,6 +54,9 @@ void local_arrays() {
static SecretDestructor arr2[10];
// expected-error at +1 {{temporary of type 'SecretDestructor' has private destructor}}
thread_local SecretDestructor arr3[10];
+#ifdef __MVS__
+ // expected-error at -2 {{thread-local storage is not supported for the current target}}
+#endif
}
struct Base {
>From 742873638fd74bf1455efa0b4faa8d6f3df75169 Mon Sep 17 00:00:00 2001
From: Sean Perry <perry at ca.ibm.com>
Date: Tue, 20 Oct 2026 23:26:10 -0400
Subject: [PATCH 05/17] More changes to enable z/OS
---
clang/test/C/C2y/n3369_2.c | 4 ++--
.../CXX/dcl.dcl/dcl.spec/dcl.constexpr/dtor.cpp | 4 ++++
.../CXX/dcl.dcl/dcl.spec/dcl.constexpr/p3-2b.cpp | 13 ++++++++++++-
.../test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p3.cpp | 8 ++++++--
.../test/CXX/dcl.dcl/dcl.spec/dcl.constinit/p1.cpp | 7 +++++++
.../test/CXX/stmt.stmt/stmt.iter/stmt.ranged/p1.cpp | 7 ++++++-
clang/test/CodeCompletion/attr.cpp | 10 ++++++----
clang/test/Lexer/bcpl-escaped-newline.c | 2 +-
clang/test/Modules/stress1.cpp | 4 ++--
9 files changed, 46 insertions(+), 13 deletions(-)
diff --git a/clang/test/C/C2y/n3369_2.c b/clang/test/C/C2y/n3369_2.c
index d0862c591a3a70..fa7e2b4f6ec100 100644
--- a/clang/test/C/C2y/n3369_2.c
+++ b/clang/test/C/C2y/n3369_2.c
@@ -5,7 +5,7 @@
typedef typeof(sizeof(0)) size_t;
-// CHECK-LABEL: define{{( dso_local)?}} i{{64|32}} @test1(
+// CHECK-LABEL: define{{( dso_local)?}}{{( zeroext)?}} i{{64|32}} @test1(
// CHECK-SAME: ) #[[ATTR0:[0-9]+]] {
// CHECK-NEXT: [[ENTRY:.*:]]
// CHECK-NEXT: [[ARRAY:%.*]] = alloca [12 x i32], align
@@ -16,7 +16,7 @@ size_t test1() {
return _Countof(array);
}
-// CHECK-LABEL: define{{( dso_local)?}} i{{64|32}} @test2(
+// CHECK-LABEL: define{{( dso_local)?}}{{( zeroext)?}} i{{64|32}} @test2(
// CHECK-SAME: ) #[[ATTR0]] {
// CHECK-NEXT: [[ENTRY:.*:]]
// CHECK-NEXT: ret i{{64|32}} 100
diff --git a/clang/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/dtor.cpp b/clang/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/dtor.cpp
index 48bc8fb426bcb1..fa6ffc155ea88a 100644
--- a/clang/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/dtor.cpp
+++ b/clang/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/dtor.cpp
@@ -41,7 +41,11 @@ namespace contents {
struct E {
constexpr ~E() {
return;
+#ifdef __MVS__
+ thread_local int e; // expected-error {{thread-local storage is not supported for the current target}}
+#else
thread_local int e; // cxx2a-warning {{definition of a thread_local variable in a constexpr function is a C++23 extension}}
+#endif
}
};
struct F {
diff --git a/clang/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p3-2b.cpp b/clang/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p3-2b.cpp
index 8cb37ae6d1cdec..6bb2a046dd4e16 100644
--- a/clang/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p3-2b.cpp
+++ b/clang/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p3-2b.cpp
@@ -10,7 +10,12 @@ constexpr int h(int n) {
constexpr int i(int n) {
if (!n)
return 0;
- thread_local const int m = n; // expected-warning {{definition of a thread_local variable in a constexpr function is incompatible with C++ standards before C++23}}
+ thread_local const int m = n;
+#ifdef __MVS__
+ // expected-error at -2 {{thread-local storage is not supported for the current target}}
+#else
+ // expected-warning at -4 {{definition of a thread_local variable in a constexpr function is incompatible with C++ standards before C++23}}
+#endif
return m;
}
@@ -41,6 +46,9 @@ constexpr int c_thread_local(int n) {
if (!n)
return 0;
static _Thread_local int a; // expected-warning {{definition of a static variable in a constexpr function is incompatible with C++ standards before C++23}}
+#ifdef __MVS__
+ // expected-error at -2 {{thread-local storage is not supported for the current target}}
+#endif
_Thread_local int b; // // expected-error {{'_Thread_local' variables must have global storage}}
return 0;
}
@@ -49,6 +57,9 @@ constexpr int gnu_thread_local(int n) {
if (!n)
return 0;
static __thread int a; // expected-warning {{definition of a static variable in a constexpr function is incompatible with C++ standards before C++23}}
+#ifdef __MVS__
+ // expected-error at -2 {{thread-local storage is not supported for the current target}}
+#endif
__thread int b; // expected-error {{'__thread' variables must have global storage}}
return 0;
}
diff --git a/clang/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p3.cpp b/clang/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p3.cpp
index 51990ee4341d29..5de69072597f6c 100644
--- a/clang/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p3.cpp
+++ b/clang/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p3.cpp
@@ -158,8 +158,12 @@ constexpr int DisallowedStmtsCXX14_5() {
constexpr int DisallowedStmtsCXX14_6() {
// - a definition of a variable of thread storage duration
return 0;
- thread_local constexpr int n = 123; // beforecxx14-warning {{variable declaration in a constexpr function is a C++14 extension}} \
- // beforecxx23-warning {{definition of a thread_local variable in a constexpr function is a C++23 extension}}
+ thread_local constexpr int n = 123; // beforecxx14-warning {{variable declaration in a constexpr function is a C++14 extension}}
+#ifdef __MVS__
+ // expected-error at -2 {{thread-local storage is not supported for the current target}}
+#else
+ // beforecxx23-warning at -4 {{definition of a thread_local variable in a constexpr function is a C++23 extension}}
+#endif
}
constexpr int DisallowedStmtsCXX14_7() {
// - a definition of a variable for which no initialization is performed
diff --git a/clang/test/CXX/dcl.dcl/dcl.spec/dcl.constinit/p1.cpp b/clang/test/CXX/dcl.dcl/dcl.spec/dcl.constinit/p1.cpp
index 170c8c7be0c9f4..7ac1ed00ade450 100644
--- a/clang/test/CXX/dcl.dcl/dcl.spec/dcl.constinit/p1.cpp
+++ b/clang/test/CXX/dcl.dcl/dcl.spec/dcl.constinit/p1.cpp
@@ -2,11 +2,18 @@
constinit int a;
constinit thread_local int b;
+#ifdef __MVS__
+ // expected-error at -2 {{thread-local storage is not supported for the current target}}
+#endif
constinit static int c;
void f() {
constinit static int a;
constinit thread_local int b;
+#ifdef __MVS__
+ // expected-error at -2 {{local variable cannot be declared 'constinit'}}
+ // expected-error at -3 {{thread-local storage is not supported for the current target}}
+#endif
constinit int c; // expected-error {{local variable cannot be declared 'constinit'}}
}
diff --git a/clang/test/CXX/stmt.stmt/stmt.iter/stmt.ranged/p1.cpp b/clang/test/CXX/stmt.stmt/stmt.iter/stmt.ranged/p1.cpp
index e82b4d33d5a6a0..a7062b6503960e 100644
--- a/clang/test/CXX/stmt.stmt/stmt.iter/stmt.ranged/p1.cpp
+++ b/clang/test/CXX/stmt.stmt/stmt.iter/stmt.ranged/p1.cpp
@@ -151,7 +151,12 @@ void g() {
for (extern int a : A()) {} // expected-error {{loop variable 'a' may not be declared 'extern'}}
for (static int a : A()) {} // expected-error {{loop variable 'a' may not be declared 'static'}}
- for (thread_local int a : A()) {} // expected-error {{loop variable 'a' may not be declared 'thread_local'}}
+ for (thread_local int a : A()) {}
+#ifdef __MVS__
+ // expected-error at -2 {{thread-local storage is not supported for the current target}}
+#else
+ // expected-error at -4 {{loop variable 'a' may not be declared 'thread_local'}}
+#endif
for (register int a : A()) {} // expected-error {{loop variable 'a' may not be declared 'register'}} expected-warning 0-1{{register}} expected-error 0-1{{register}}
for (constexpr int a : X::C()) {} // OK per CWG issue #1204.
for (constexpr int a : A()) {} // expected-error {{constexpr variable 'a' must be initialized by a constant expression}} expected-note-re {{read of implicit variable '__begin{{[0-9]+}}' of range-based 'for' loop is not allowed in a constant expression}}
diff --git a/clang/test/CodeCompletion/attr.cpp b/clang/test/CodeCompletion/attr.cpp
index cf7298e742e833..46b79d07cfbc42 100644
--- a/clang/test/CodeCompletion/attr.cpp
+++ b/clang/test/CodeCompletion/attr.cpp
@@ -53,9 +53,9 @@ int e;
// RUN: %clang_cc1 -code-completion-at=%s:%(line-3):46 %s | FileCheck --check-prefix=PRAGMA %s
// PRAGMA: COMPLETION: Pattern : internal_linkage
-#ifdef MS_EXT
+#ifdef MS_EXT_DSTHREAD
int __declspec(thread) f;
-// RUN: %clang_cc1 -fms-extensions -DMS_EXT -code-completion-at=%s:%(line-1):16 %s | FileCheck --check-prefix=DS %s
+// RUN: %clang_cc1 -fms-extensions -DMS_EXT_DSTHREAD -code-completion-at=%s:%(line-1):16 %s | FileCheck --check-prefix=DS %s
// DS-NOT: COMPLETION: Pattern : __convergent__
// DS-NOT: COMPLETION: Pattern : __used__
// DS-NOT: COMPLETION: Pattern : clang::convergent
@@ -63,16 +63,18 @@ int __declspec(thread) f;
// DS: COMPLETION: Pattern : thread
// DS-NOT: COMPLETION: Pattern : used
// DS: COMPLETION: Pattern : uuid
+#endif // MS_EXT_DSTHREAD
+#ifdef MS_EXT_UUID
[uuid("123e4567-e89b-12d3-a456-426614174000")] struct g;
-// RUN: %clang_cc1 -fms-extensions -DMS_EXT -code-completion-at=%s:%(line-1):2 %s | FileCheck --check-prefix=MS %s
+// RUN: %clang_cc1 -fms-extensions -DMS_EXT_UUID -code-completion-at=%s:%(line-1):2 %s | FileCheck --check-prefix=MS %s
// MS-NOT: COMPLETION: Pattern : __uuid__
// MS-NOT: COMPLETION: Pattern : clang::convergent
// MS-NOT: COMPLETION: Pattern : convergent
// MS-NOT: COMPLETION: Pattern : thread
// MS-NOT: COMPLETION: Pattern : used
// MS: COMPLETION: Pattern : uuid
-#endif // MS_EXT
+#endif // MS_EXT_UUID
void foo() {
[[omp::sequence(directive(parallel), directive(critical))]]
diff --git a/clang/test/Lexer/bcpl-escaped-newline.c b/clang/test/Lexer/bcpl-escaped-newline.c
index 0883173b224fda..bf91551877f327 100644
--- a/clang/test/Lexer/bcpl-escaped-newline.c
+++ b/clang/test/Lexer/bcpl-escaped-newline.c
@@ -1,5 +1,5 @@
// RUN: %clang_cc1 -Eonly -ftrigraphs %s
-// RUN: %clang_cc1 -Eonly -verify %s
+// RUN: %clang_cc1 -Eonly -fno-trigraphs -verify %s
//\
#error bar
diff --git a/clang/test/Modules/stress1.cpp b/clang/test/Modules/stress1.cpp
index 14ac6fa965d2ad..451d6410b20637 100644
--- a/clang/test/Modules/stress1.cpp
+++ b/clang/test/Modules/stress1.cpp
@@ -80,7 +80,7 @@
//
// RUN: diff %t/merge00.pcm %t/merge00_check.pcm
//
-// RUN: %clang_cc1 -fmodules -x c++ -std=c++11 \
+// RUN: %clang_cc1 -source-date-epoch 1613676318 -fmodules -x c++ -std=c++11 \
// RUN: -I Inputs/stress1 \
// RUN: -fno-implicit-modules \
// RUN: -fmodules-cache-path=%t \
@@ -93,7 +93,7 @@
// RUN: -fmodule-file=%t/merge00.pcm \
// RUN: -verify stress1.cpp -emit-llvm -o %t/stress1.ll
//
-// RUN: %clang_cc1 -fmodules -x c++ -std=c++11 \
+// RUN: %clang_cc1 -source-date-epoch 1613676318 -fmodules -x c++ -std=c++11 \
// RUN: -I Inputs/stress1 \
// RUN: -fno-implicit-modules \
// RUN: -fmodules-cache-path=%t \
>From 41ff51b3d53e3d57d7b117f97c567292d0650813 Mon Sep 17 00:00:00 2001
From: Sean Perry <perry at ca.ibm.com>
Date: Tue, 20 Oct 2026 23:51:36 -0400
Subject: [PATCH 06/17] Update tests that now pass
---
.../conflict-preserves-unrelated-zero-length-insert.test | 1 -
.../ssaf-src-edit-merge/conflict-stderr-without-sarif.test | 1 -
.../test/Analysis/Scalable/ssaf-src-edit-merge/empty-input.test | 1 -
.../Analysis/Scalable/ssaf-src-edit-merge/identical-overlap.test | 1 -
.../Scalable/ssaf-src-edit-merge/no-conflict-sarif-empty.test | 1 -
.../Analysis/Scalable/ssaf-src-edit-merge/non-overlapping.test | 1 -
.../Analysis/Scalable/ssaf-src-edit-merge/order-invariance.test | 1 -
.../ssaf-src-edit-merge/pre-dedup-identical-non-zero-length.test | 1 -
.../ssaf-src-edit-merge/pre-dedup-zero-length-insert.test | 1 -
.../range-overlap-cluster-of-three-sarif.test | 1 -
.../ssaf-src-edit-merge/range-overlap-conflict-sarif.test | 1 -
.../ssaf-src-edit-merge/single-input-internal-conflict.test | 1 -
.../test/Analysis/Scalable/ssaf-src-edit-merge/single-input.test | 1 -
.../Scalable/ssaf-src-edit-merge/three-input-all-conflict.test | 1 -
.../Scalable/ssaf-src-edit-merge/three-input-conflict-sarif.test | 1 -
.../two-conflicts-different-offsets-sarif.test | 1 -
.../Scalable/ssaf-src-edit-merge/two-input-conflict-sarif.test | 1 -
.../Scalable/ssaf-src-edit-merge/two-input-conflict.test | 1 -
clang/test/CodeGen/2007-04-14-FNoBuiltin.c | 1 -
clang/test/CodeGen/builtin-rename.c | 1 -
clang/test/CodeGen/libcalls-fno-builtin.c | 1 -
clang/test/CodeGen/nomathbuiltin.c | 1 -
clang/test/CodeGen/variable-array.c | 1 -
.../CodeGenHipStdPar/select-accelerator-code-pass-ordering.cpp | 1 -
clang/test/Driver/no-objc-arr.m | 1 -
clang/test/Frontend/backend-attribute-error-warning-optimize.c | 1 -
clang/test/Modules/ASTSignature.c | 1 -
clang/test/Modules/class-instantiate-no-change-02.cppm | 1 -
clang/test/Modules/no-transitive-decls-change.cppm | 1 -
clang/test/Modules/no-transitive-source-location-change-2.cppm | 1 -
clang/test/Modules/no-transitive-type-change.cppm | 1 -
clang/test/Modules/stress-objc.m | 1 -
clang/test/Preprocessor/SOURCE_DATE_EPOCH.c | 1 -
clang/test/Tooling/clang-diff-ast.cpp | 1 -
clang/test/Tooling/clang-diff-basic.cpp | 1 -
clang/test/Tooling/clang-diff-html.test | 1 -
36 files changed, 36 deletions(-)
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/conflict-preserves-unrelated-zero-length-insert.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/conflict-preserves-unrelated-zero-length-insert.test
index 458f54f056a830..bdda153a0034b0 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/conflict-preserves-unrelated-zero-length-insert.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/conflict-preserves-unrelated-zero-length-insert.test
@@ -13,7 +13,6 @@
# (file, offset, length, text), not just (file, offset), or it will
# collaterally delete this unrelated insertion.
-# XFAIL: system-zos
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# RUN: printf '%%80s' '' > %t.dir/foo.cpp
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/conflict-stderr-without-sarif.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/conflict-stderr-without-sarif.test
index 15fb1e89a38584..9d58c9f0fbc853 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/conflict-stderr-without-sarif.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/conflict-stderr-without-sarif.test
@@ -2,7 +2,6 @@
# NOT pass --sarif-conflicts-out=. Stderr cluster line is still emitted
# and drop-all still applies; no SARIF file is created at any path.
-# XFAIL: system-zos
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# RUN: printf '%%80s' '' > %t.dir/foo.cpp
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/empty-input.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/empty-input.test
index 4b738e67a111e5..c45b8001797c00 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/empty-input.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/empty-input.test
@@ -2,7 +2,6 @@
# a valid TranslationUnitReplacements with an empty Replacements sequence.
# Per spec the MainSourceFile is the shared value when all inputs agree.
-# XFAIL: system-zos
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# RUN: printf '%%80s' '' > %t.dir/foo.cpp
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/identical-overlap.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/identical-overlap.test
index 3840d8a25cc447..300a6f9add3927 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/identical-overlap.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/identical-overlap.test
@@ -2,7 +2,6 @@
# inputs collapse to one in the merged output. No "conflict:" line because
# this is a textbook dedup, not a conflict.
-# XFAIL: system-zos
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# RUN: printf '%%80s' '' > %t.dir/foo.cpp
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/no-conflict-sarif-empty.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/no-conflict-sarif-empty.test
index b58e49aca34925..3353d4b4470be3 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/no-conflict-sarif-empty.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/no-conflict-sarif-empty.test
@@ -2,7 +2,6 @@
# with results: [] (empty array). The merged YAML retains both replacements.
# Tool exits 0; stderr contains no `conflict:` line.
-# XFAIL: system-zos
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# RUN: printf '%%80s' '' > %t.dir/foo.cpp
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/non-overlapping.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/non-overlapping.test
index e72f59859443ca..314d35ff1b77e8 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/non-overlapping.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/non-overlapping.test
@@ -2,7 +2,6 @@
# Conflicts are detected per-(file, offset) so disjoint offsets yield no
# tool-level "conflict:" line, and exit is 0.
-# XFAIL: system-zos
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# Real source file required so groupReplacements doesn't drop the entries.
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/order-invariance.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/order-invariance.test
index b158b675467443..84d21423269573 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/order-invariance.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/order-invariance.test
@@ -3,7 +3,6 @@
# the deterministic sort in flattenFileChanges and the dedup-by-key
# logic don't inadvertently depend on input order.
-# XFAIL: system-zos
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# RUN: printf '%%80s' '' > %t.dir/foo.cpp
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/pre-dedup-identical-non-zero-length.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/pre-dedup-identical-non-zero-length.test
index 9c4f497ba3fff0..ce802f23ecae77 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/pre-dedup-identical-non-zero-length.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/pre-dedup-identical-non-zero-length.test
@@ -3,7 +3,6 @@
# also covers this through library-side overlap detection; this test pins the
# pre-dedup pass's contract that the dedup applies regardless of length.
-# XFAIL: system-zos
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# RUN: printf '%%80s' '' > %t.dir/foo.cpp
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/pre-dedup-zero-length-insert.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/pre-dedup-zero-length-insert.test
index 27441d6edb084f..a545ad37b385fe 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/pre-dedup-zero-length-insert.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/pre-dedup-zero-length-insert.test
@@ -5,7 +5,6 @@
# where clang-apply-replacements' groupReplacements skipped dedup for plain
# TUReplacements and AtomicChange::replace stacked the duplicates.
-# XFAIL: system-zos
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# RUN: printf '%%80s' '' > %t.dir/foo.cpp
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/range-overlap-cluster-of-three-sarif.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/range-overlap-cluster-of-three-sarif.test
index 40441807d408ba..742ac28ef1a543 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/range-overlap-cluster-of-three-sarif.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/range-overlap-cluster-of-three-sarif.test
@@ -13,7 +13,6 @@
## This is the regression guard for transitive merging — it cannot be
## exercised by any pairwise-only fixture.
-# XFAIL: system-zos
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# RUN: printf '%%80s' '' > %t.dir/foo.cpp
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/range-overlap-conflict-sarif.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/range-overlap-conflict-sarif.test
index f79670f877d6e3..19c04176fd37b9 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/range-overlap-conflict-sarif.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/range-overlap-conflict-sarif.test
@@ -9,7 +9,6 @@
# This is the mandatory regression guard for the range-overlap cluster
# definition — it cannot be exercised by any same-offset fixture.
-# XFAIL: system-zos
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# RUN: printf '%%80s' '' > %t.dir/foo.cpp
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/single-input-internal-conflict.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/single-input-internal-conflict.test
index 9f48bf2dabca7c..e14ead37fdf1a9 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/single-input-internal-conflict.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/single-input-internal-conflict.test
@@ -3,7 +3,6 @@
# this as a within-input conflict and drops one; the tool reports the
# cluster on stderr and exits 0.
-# XFAIL: system-zos
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# RUN: printf '%%80s' '' > %t.dir/foo.cpp
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/single-input.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/single-input.test
index 9a8f05fa513e71..55c9399373f2a6 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/single-input.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/single-input.test
@@ -2,7 +2,6 @@
# "If exactly one input is given, the tool SHALL still produce a one-run
# merged document equivalent to that input."
-# XFAIL: system-zos
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# RUN: printf '%%80s' '' > %t.dir/foo.cpp
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/three-input-all-conflict.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/three-input-all-conflict.test
index 9b74feedb5ebed..cc59927176736f 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/three-input-all-conflict.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/three-input-all-conflict.test
@@ -4,7 +4,6 @@
# a "conflict:" line for the (file, offset) cluster with the full cluster
# size (3) and exits 0.
-# XFAIL: system-zos
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# RUN: printf '%%80s' '' > %t.dir/foo.cpp
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/three-input-conflict-sarif.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/three-input-conflict-sarif.test
index 918bb2533e16d7..2e7e32c16425b2 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/three-input-conflict-sarif.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/three-input-conflict-sarif.test
@@ -1,7 +1,6 @@
# Three inputs all conflict pairwise at (foo.cpp, 10) — drop-all removes
# all three from the merged YAML; SARIF result lists three relatedLocations.
-# XFAIL: system-zos
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# RUN: printf '%%80s' '' > %t.dir/foo.cpp
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/two-conflicts-different-offsets-sarif.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/two-conflicts-different-offsets-sarif.test
index fd08981661acf1..e6d080018463c8 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/two-conflicts-different-offsets-sarif.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/two-conflicts-different-offsets-sarif.test
@@ -3,7 +3,6 @@
# removes all four; SARIF has two results, ordered by (file, min-offset)
# ascending so the offset-10 cluster precedes the offset-30 cluster.
-# XFAIL: system-zos
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# RUN: printf '%%80s' '' > %t.dir/foo.cpp
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/two-input-conflict-sarif.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/two-input-conflict-sarif.test
index 85a3a3bb9a1d62..742557b3b2dc29 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/two-input-conflict-sarif.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/two-input-conflict-sarif.test
@@ -4,7 +4,6 @@
# given by --sarif-conflicts-out= containing one error-level result with
# two relatedLocations (one per dropped candidate).
-# XFAIL: system-zos
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# RUN: printf '%%80s' '' > %t.dir/foo.cpp
diff --git a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/two-input-conflict.test b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/two-input-conflict.test
index eb89efff9e2d01..029973d57f3b2e 100644
--- a/clang/test/Analysis/Scalable/ssaf-src-edit-merge/two-input-conflict.test
+++ b/clang/test/Analysis/Scalable/ssaf-src-edit-merge/two-input-conflict.test
@@ -4,7 +4,6 @@
# tool emits one "conflict:" cluster line for that (file, offset) with the
# full cluster size, and exits 0.
-# XFAIL: system-zos
# RUN: rm -rf %t.dir
# RUN: mkdir -p %t.dir
# RUN: printf '%%80s' '' > %t.dir/foo.cpp
diff --git a/clang/test/CodeGen/2007-04-14-FNoBuiltin.c b/clang/test/CodeGen/2007-04-14-FNoBuiltin.c
index 12173ca25a723e..b95f41c52d27c6 100644
--- a/clang/test/CodeGen/2007-04-14-FNoBuiltin.c
+++ b/clang/test/CodeGen/2007-04-14-FNoBuiltin.c
@@ -1,4 +1,3 @@
-// XFAIL: system-zos
// RUN: %clang_cc1 -emit-llvm %s -O2 -fno-builtin -o - | FileCheck %s
// RUN: %clang_cc1 -emit-llvm %s -O2 -fno-builtin-printf -o - | FileCheck %s
// Check that -fno-builtin is honored.
diff --git a/clang/test/CodeGen/builtin-rename.c b/clang/test/CodeGen/builtin-rename.c
index bebe7586b33349..0092e54ef37d9b 100644
--- a/clang/test/CodeGen/builtin-rename.c
+++ b/clang/test/CodeGen/builtin-rename.c
@@ -1,4 +1,3 @@
-// XFAIL: system-zos
// RUN: %clang_cc1 %s -emit-llvm -o - | grep 'declare.*printf' | count 1
// PR3612
diff --git a/clang/test/CodeGen/libcalls-fno-builtin.c b/clang/test/CodeGen/libcalls-fno-builtin.c
index 7941c621e46541..6aef0efa1d9b7c 100644
--- a/clang/test/CodeGen/libcalls-fno-builtin.c
+++ b/clang/test/CodeGen/libcalls-fno-builtin.c
@@ -1,4 +1,3 @@
-// XFAIL: system-zos
// RUN: %clang_cc1 -emit-llvm -fno-builtin -o - %s | FileCheck --check-prefixes=GLOBAL,CHECK %s
// RUN: %clang_cc1 -emit-llvm -fno-builtin-ceil -fno-builtin-copysign -fno-builtin-cos \
// RUN: -fno-builtin-fabs -fno-builtin-floor -fno-builtin-strcat -fno-builtin-strncat \
diff --git a/clang/test/CodeGen/nomathbuiltin.c b/clang/test/CodeGen/nomathbuiltin.c
index 9c2d647253505b..35e7c567e68d27 100644
--- a/clang/test/CodeGen/nomathbuiltin.c
+++ b/clang/test/CodeGen/nomathbuiltin.c
@@ -1,4 +1,3 @@
-// XFAIL: system-zos
// RUN: %clang_cc1 -fno-math-builtin -emit-llvm -o - %s | FileCheck %s
// Check that the -fno-math-builtin option for -cc1 is working properly.
diff --git a/clang/test/CodeGen/variable-array.c b/clang/test/CodeGen/variable-array.c
index 9d979e7492cc0b..c2a7c2ffb93f47 100644
--- a/clang/test/CodeGen/variable-array.c
+++ b/clang/test/CodeGen/variable-array.c
@@ -1,4 +1,3 @@
-// XFAIL: system-zos
// RUN: %clang_cc1 -emit-llvm < %s | grep puts | count 4
int puts(const char *);
diff --git a/clang/test/CodeGenHipStdPar/select-accelerator-code-pass-ordering.cpp b/clang/test/CodeGenHipStdPar/select-accelerator-code-pass-ordering.cpp
index 4ea49de1a094a7..a44267196eeedc 100644
--- a/clang/test/CodeGenHipStdPar/select-accelerator-code-pass-ordering.cpp
+++ b/clang/test/CodeGenHipStdPar/select-accelerator-code-pass-ordering.cpp
@@ -1,5 +1,4 @@
// REQUIRES: amdgpu-registered-target
-// XFAIL: system-zos
// Test that the accelerator code selection pass only gets invoked after linking
// Ensure Pass HipStdParAcceleratorCodeSelectionPass is not invoked in PreLink.
diff --git a/clang/test/Driver/no-objc-arr.m b/clang/test/Driver/no-objc-arr.m
index 3a519abd70409f..deaf6b9e00ad1d 100644
--- a/clang/test/Driver/no-objc-arr.m
+++ b/clang/test/Driver/no-objc-arr.m
@@ -1,4 +1,3 @@
-// XFAIL: system-zos
// RUN: %clang -Werror -fobjc-arc -fsyntax-only -fno-objc-arc -Xclang -verify %s
// expected-no-diagnostics
diff --git a/clang/test/Frontend/backend-attribute-error-warning-optimize.c b/clang/test/Frontend/backend-attribute-error-warning-optimize.c
index 6ff840a4651fb5..d5a8d57e36c964 100644
--- a/clang/test/Frontend/backend-attribute-error-warning-optimize.c
+++ b/clang/test/Frontend/backend-attribute-error-warning-optimize.c
@@ -1,4 +1,3 @@
-// XFAIL: target={{.*}}-zos{{.*}}
// RUN: %clang_cc1 -O2 -verify -emit-codegen-only %s
__attribute__((error("oh no foo"))) void foo(void);
diff --git a/clang/test/Modules/ASTSignature.c b/clang/test/Modules/ASTSignature.c
index 0816a23daf06c3..11d7c5c9d43d53 100644
--- a/clang/test/Modules/ASTSignature.c
+++ b/clang/test/Modules/ASTSignature.c
@@ -1,4 +1,3 @@
-// XFAIL: system-zos
// RUN: rm -rf %t
// RUN: %clang_cc1 -iquote %S/Inputs/ASTHash/ -fsyntax-only \
// RUN: -fmodules -fimplicit-module-maps -fmodules-strict-context-hash \
diff --git a/clang/test/Modules/class-instantiate-no-change-02.cppm b/clang/test/Modules/class-instantiate-no-change-02.cppm
index 78178bc21c25ae..9188408af6ec8b 100644
--- a/clang/test/Modules/class-instantiate-no-change-02.cppm
+++ b/clang/test/Modules/class-instantiate-no-change-02.cppm
@@ -1,4 +1,3 @@
-// XFAIL: system-zos
// RUN: rm -rf %t
// RUN: mkdir -p %t
// RUN: split-file %s %t
diff --git a/clang/test/Modules/no-transitive-decls-change.cppm b/clang/test/Modules/no-transitive-decls-change.cppm
index 66a482bd689abb..83594b09ea7896 100644
--- a/clang/test/Modules/no-transitive-decls-change.cppm
+++ b/clang/test/Modules/no-transitive-decls-change.cppm
@@ -1,7 +1,6 @@
// Testing that changing a declaration in an unused module file won't change
// the BMI of the current module file.
//
-// XFAIL: system-zos
// RUN: rm -rf %t
// RUN: split-file %s %t
//
diff --git a/clang/test/Modules/no-transitive-source-location-change-2.cppm b/clang/test/Modules/no-transitive-source-location-change-2.cppm
index 3199ba74cc0591..f16b945a04d69e 100644
--- a/clang/test/Modules/no-transitive-source-location-change-2.cppm
+++ b/clang/test/Modules/no-transitive-source-location-change-2.cppm
@@ -1,7 +1,6 @@
// Testing that adding a new line in a module interface unit won't cause the BMI
// of consuming module unit changes.
//
-// XFAIL: system-zos
// RUN: rm -rf %t
// RUN: split-file %s %t
//
diff --git a/clang/test/Modules/no-transitive-type-change.cppm b/clang/test/Modules/no-transitive-type-change.cppm
index bfbc1a9da4e088..9ec72e851b17dc 100644
--- a/clang/test/Modules/no-transitive-type-change.cppm
+++ b/clang/test/Modules/no-transitive-type-change.cppm
@@ -1,7 +1,6 @@
// Testing that changing a type in an unused module file won't change
// the BMI of the current module file.
//
-// XFAIL: system-zos
// RUN: rm -rf %t
// RUN: split-file %s %t
//
diff --git a/clang/test/Modules/stress-objc.m b/clang/test/Modules/stress-objc.m
index 0cc5cab062fb8f..edbebd3576a95e 100644
--- a/clang/test/Modules/stress-objc.m
+++ b/clang/test/Modules/stress-objc.m
@@ -1,4 +1,3 @@
-// XFAIL: system-zos
// RUN: cd %S
// RUN: %clang_cc1 -emit-pch -x objective-c-header %s -o %t_c00.pch -fno-pch-timestamp
diff --git a/clang/test/Preprocessor/SOURCE_DATE_EPOCH.c b/clang/test/Preprocessor/SOURCE_DATE_EPOCH.c
index aa1ee51f2b6704..30aec44a535d71 100644
--- a/clang/test/Preprocessor/SOURCE_DATE_EPOCH.c
+++ b/clang/test/Preprocessor/SOURCE_DATE_EPOCH.c
@@ -1,4 +1,3 @@
-// XFAIL: system-zos
// RUN: %clang_cc1 -source-date-epoch 0 -E %s | FileCheck %s --check-prefix=19700101
// 19700101: const char date[] = "Jan 1 1970";
diff --git a/clang/test/Tooling/clang-diff-ast.cpp b/clang/test/Tooling/clang-diff-ast.cpp
index 0e6365467d1f56..a8efda50a4052e 100644
--- a/clang/test/Tooling/clang-diff-ast.cpp
+++ b/clang/test/Tooling/clang-diff-ast.cpp
@@ -1,4 +1,3 @@
-// XFAIL: system-zos
// RUN: clang-diff -ast-dump %s -- -std=c++11 | FileCheck %s
diff --git a/clang/test/Tooling/clang-diff-basic.cpp b/clang/test/Tooling/clang-diff-basic.cpp
index 3fa0d224fecd32..a0c0163530ffaa 100644
--- a/clang/test/Tooling/clang-diff-basic.cpp
+++ b/clang/test/Tooling/clang-diff-basic.cpp
@@ -1,4 +1,3 @@
-// XFAIL: system-zos
// RUN: clang-diff -dump-matches %S/Inputs/clang-diff-basic-src.cpp %s -- | FileCheck %s
// CHECK: Match TranslationUnitDecl{{.*}} to TranslationUnitDecl
diff --git a/clang/test/Tooling/clang-diff-html.test b/clang/test/Tooling/clang-diff-html.test
index 98f3601a299869..00d9e07d2fcf4b 100644
--- a/clang/test/Tooling/clang-diff-html.test
+++ b/clang/test/Tooling/clang-diff-html.test
@@ -1,4 +1,3 @@
-XFAIL: system-zos
RUN: clang-diff -html %S/Inputs/clang-diff-basic-src.cpp %S/clang-diff-basic.cpp -- | FileCheck %s
CHECK: <pre><div id='L' class='code'><span id='L0' tid='R0' title='TranslationUnitDecl
>From cf62d03d26751f0e7c575368fd601c32c848d337 Mon Sep 17 00:00:00 2001
From: Sean Perry <perry at ca.ibm.com>
Date: Wed, 21 Oct 2026 00:10:47 -0400
Subject: [PATCH 07/17] ObjC isn't supported on z/OS
---
clang/test/DebugInfo/ObjC/lit.local.cfg | 8 ++++++--
clang/test/DebugInfo/ObjCXX/lit.local.cfg | 8 ++++++--
2 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/clang/test/DebugInfo/ObjC/lit.local.cfg b/clang/test/DebugInfo/ObjC/lit.local.cfg
index b48f68b01581d8..168a6591a6e546 100644
--- a/clang/test/DebugInfo/ObjC/lit.local.cfg
+++ b/clang/test/DebugInfo/ObjC/lit.local.cfg
@@ -1,5 +1,9 @@
# objective-C is not supported on AIX and zOS
-unsupported_platforms = [ "system-aix", "system-zos" ]
+import re
-if any(up in config.available_features for up in unsupported_platforms):
+unsupported_platforms = [ "system-aix" ]
+
+if any(up in config.available_features for up in unsupported_platforms) or re.match(
+ r".*-zos", config.target_triple
+):
config.unsupported = True
diff --git a/clang/test/DebugInfo/ObjCXX/lit.local.cfg b/clang/test/DebugInfo/ObjCXX/lit.local.cfg
index 8d5c476a2f6822..1530b83cba60a3 100644
--- a/clang/test/DebugInfo/ObjCXX/lit.local.cfg
+++ b/clang/test/DebugInfo/ObjCXX/lit.local.cfg
@@ -1,5 +1,9 @@
# objective-CXX is not supported on AIX and zOS
-unsupported_platforms = [ "system-aix", "system-zos" ]
+import re
-if any(up in config.available_features for up in unsupported_platforms):
+unsupported_platforms = [ "system-aix" ]
+
+if any(up in config.available_features for up in unsupported_platforms) or re.match(
+ r".*-zos", config.target_triple
+):
config.unsupported = True
>From a2a43dcdcd6fb52ed2432bc7d250ddfc1cee98aa Mon Sep 17 00:00:00 2001
From: Sean Perry <perry at ca.ibm.com>
Date: Wed, 21 Oct 2026 00:19:59 -0400
Subject: [PATCH 08/17] Set epoch so diff works
---
clang/test/Frontend/ast-main.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/clang/test/Frontend/ast-main.c b/clang/test/Frontend/ast-main.c
index 6a64497f4109ca..ff5991c03c9c5b 100644
--- a/clang/test/Frontend/ast-main.c
+++ b/clang/test/Frontend/ast-main.c
@@ -1,6 +1,6 @@
-// RUN: env SDKROOT="/" %clang -emit-llvm -S -o - -x c - < %s | grep -v DIFile > %t1.ll
+// RUN: env SDKROOT="/" %clang -Xclang -source-date-epoch -Xclang 1613676318 -emit-llvm -S -o - -x c - < %s | grep -v DIFile > %t1.ll
// RUN: env SDKROOT="/" %clang -emit-ast -o %t.ast %s
-// RUN: env SDKROOT="/" %clang -emit-llvm -S -o - -x ast - < %t.ast | grep -v DIFile > %t2.ll
+// RUN: env SDKROOT="/" %clang -Xclang -source-date-epoch -Xclang 1613676318 -emit-llvm -S -o - -x ast - < %t.ast | grep -v DIFile > %t2.ll
// RUN: diff %t1.ll %t2.ll
int main(void) {
>From ecb8fa28d50ef6fec453de6cb25be19824d877aa Mon Sep 17 00:00:00 2001
From: Sean Perry <perry at ca.ibm.com>
Date: Wed, 21 Oct 2026 00:29:12 -0400
Subject: [PATCH 09/17] Set epoch so diff works
---
clang/test/DebugInfo/CXX/determinism.cpp | 4 ++--
clang/test/Frontend/ast-main.cpp | 4 ++--
clang/test/Modules/empty.modulemap | 4 ++--
clang/test/PCH/designated-init.c | 4 ++--
clang/test/VFS/output-file-permissions.c | 4 ++--
5 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/clang/test/DebugInfo/CXX/determinism.cpp b/clang/test/DebugInfo/CXX/determinism.cpp
index c0a70a09c95db0..f413f9bc16ed22 100644
--- a/clang/test/DebugInfo/CXX/determinism.cpp
+++ b/clang/test/DebugInfo/CXX/determinism.cpp
@@ -1,5 +1,5 @@
-// RUN: %clang_cc1 -emit-llvm -debug-info-kind=limited -o %t1.ll %s
-// RUN: %clang_cc1 -emit-llvm -debug-info-kind=limited -o %t2.ll %s
+// RUN: %clang_cc1 -source-date-epoch 1613676318 -emit-llvm -debug-info-kind=limited -o %t1.ll %s
+// RUN: %clang_cc1 -source-date-epoch 1613676318 -emit-llvm -debug-info-kind=limited -o %t2.ll %s
// RUN: diff %t1.ll %t2.ll
template <int N> struct C {
diff --git a/clang/test/Frontend/ast-main.cpp b/clang/test/Frontend/ast-main.cpp
index fc09e6437f93f1..ea4ce52e01a509 100644
--- a/clang/test/Frontend/ast-main.cpp
+++ b/clang/test/Frontend/ast-main.cpp
@@ -1,6 +1,6 @@
-// RUN: env SDKROOT="/" %clang -Wno-error=return-type -emit-llvm -S -o - -x c++ - < %s | grep -v DIFile > %t1.ll
+// RUN: env SDKROOT="/" %clang -Wno-error=return-type -Xclang -source-date-epoch -Xclang 1613676318 -emit-llvm -S -o - -x c++ - < %s | grep -v DIFile > %t1.ll
// RUN: env SDKROOT="/" %clang -Wno-error=return-type -fno-delayed-template-parsing -emit-ast -o %t.ast %s
-// RUN: env SDKROOT="/" %clang -Wno-error=return-type -emit-llvm -S -o - -x ast - < %t.ast | grep -v DIFile > %t2.ll
+// RUN: env SDKROOT="/" %clang -Wno-error=return-type -Xclang -source-date-epoch -Xclang 1613676318 -emit-llvm -S -o - -x ast - < %t.ast | grep -v DIFile > %t2.ll
// RUN: diff %t1.ll %t2.ll
// http://llvm.org/bugs/show_bug.cgi?id=15377
diff --git a/clang/test/Modules/empty.modulemap b/clang/test/Modules/empty.modulemap
index 8cad8b67b91155..5cee31da19103f 100644
--- a/clang/test/Modules/empty.modulemap
+++ b/clang/test/Modules/empty.modulemap
@@ -1,12 +1,12 @@
// RUN: rm -rf %t
//
// RUN: %clang_cc1 -fmodules -x c++ -fmodules-cache-path=%t \
-// RUN: -fno-implicit-modules \
+// RUN: -fno-implicit-modules -source-date-epoch 1613676318 \
// RUN: -emit-module -fmodule-name=empty -o %t/base.pcm \
// RUN: %s
//
// RUN: %clang_cc1 -fmodules -x c++ -fmodules-cache-path=%t \
-// RUN: -fno-implicit-modules \
+// RUN: -fno-implicit-modules -source-date-epoch 1613676318 \
// RUN: -emit-module -fmodule-name=empty -o %t/check.pcm \
// RUN: %s
//
diff --git a/clang/test/PCH/designated-init.c b/clang/test/PCH/designated-init.c
index beb4dffe6144bf..7050bb82507c5e 100644
--- a/clang/test/PCH/designated-init.c
+++ b/clang/test/PCH/designated-init.c
@@ -1,7 +1,7 @@
// Test this without pch.
-// RUN: %clang_cc1 %s -include %s.h -emit-llvm -o %t.withoutpch.ll
+// RUN: %clang_cc1 -source-date-epoch 1613676318 %s -include %s.h -emit-llvm -o %t.withoutpch.ll
// Test with pch.
// RUN: %clang_cc1 %s.h -emit-pch -o %t.pch
-// RUN: %clang_cc1 %s -include-pch %t.pch -emit-llvm -o %t.withpch.ll
+// RUN: %clang_cc1 -source-date-epoch 1613676318 %s -include-pch %t.pch -emit-llvm -o %t.withpch.ll
// RUN: diff %t.withoutpch.ll %t.withpch.ll
diff --git a/clang/test/VFS/output-file-permissions.c b/clang/test/VFS/output-file-permissions.c
index 4628024c031155..17bfd7ad25e630 100644
--- a/clang/test/VFS/output-file-permissions.c
+++ b/clang/test/VFS/output-file-permissions.c
@@ -4,13 +4,13 @@
// rm -f %t-ref.o %t-readonly.o
// Create a reference file
-// RUN: %clang -c %s -o %t-ref.o
+// RUN: env SOURCE_DATE_EPOCH=1789091336 %clang -c %s -o %t-ref.o
// Compile something, mark the output as read-only and expect it to be replaced
// (permission bits of the file itself are irrelevant)
// RUN: touch %t-readonly.o
// RUN: chmod 000 %t-readonly.o
-// RUN: %clang -c %s -o %t-readonly.o
+// RUN: env SOURCE_DATE_EPOCH=1789091336 %clang -c %s -o %t-readonly.o
// RUN: cmp %t-ref.o %t-readonly.o
void foo() {}
>From 5aa7c3d358301c36f3202c8087a2db0721ac451b Mon Sep 17 00:00:00 2001
From: Sean Perry <perry at ca.ibm.com>
Date: Wed, 21 Oct 2026 00:38:36 -0400
Subject: [PATCH 10/17] More z/OS changes
---
clang/test/C/C23/n2940.c | 1 +
clang/test/C/drs/dr3xx.c | 8 ++++++++
clang/test/ClangScanDeps/optimize-canonicalize-macros.m | 2 ++
clang/test/Parser/c11-keywords.c | 2 ++
clang/test/SemaCXX/no_destroy.cpp | 2 ++
5 files changed, 15 insertions(+)
diff --git a/clang/test/C/C23/n2940.c b/clang/test/C/C23/n2940.c
index ee92b6ec94a8c7..108cd3f4352b9b 100644
--- a/clang/test/C/C23/n2940.c
+++ b/clang/test/C/C23/n2940.c
@@ -1,3 +1,4 @@
+// XFAIL: target={{.*}}-zos{{.*}}
// RUN: %clang_cc1 -verify=no-trigraphs -std=c23 %s
// RUN: %clang_cc1 -verify=no-trigraphs -std=gnu23 %s
// RUN: %clang_cc1 -verify=no-trigraphs -std=gnu17 %s
diff --git a/clang/test/C/drs/dr3xx.c b/clang/test/C/drs/dr3xx.c
index 0f67470b013a5d..c78b66710c89ec 100644
--- a/clang/test/C/drs/dr3xx.c
+++ b/clang/test/C/drs/dr3xx.c
@@ -289,11 +289,19 @@ void f(long double f,
/* WG14 DR309: yes
* Clarifying trigraph substitution
*/
+#ifdef __MVS__
+/* Trigraphs are enabled by default on z/OS in every language mode, so the
+ * same warnings are produced for all standards. */
+int dr309??(1??) = { 1 }; /* expected-warning {{trigraph converted to '[' character}}
+ expected-warning {{trigraph converted to ']' character}}
+ */
+#else
int dr309??(1??) = { 1 }; /* c17andearlier-warning {{trigraph converted to '[' character}}
c17andearlier-warning {{trigraph converted to ']' character}}
c23andup-warning 2 {{trigraph ignored}}
c23andup-error {{expected ';' after top level declarator}}
*/
+#endif
/* NOTE: Due to interactions with the diagnostic system, dr309 should be the
* last test case in this file because subsequent diagnostics may not be
diff --git a/clang/test/ClangScanDeps/optimize-canonicalize-macros.m b/clang/test/ClangScanDeps/optimize-canonicalize-macros.m
index 3b617129138b1c..3eb0d6add093a8 100644
--- a/clang/test/ClangScanDeps/optimize-canonicalize-macros.m
+++ b/clang/test/ClangScanDeps/optimize-canonicalize-macros.m
@@ -11,6 +11,8 @@
// This tests that we have two scanning module variants.
// RUN: find %t/module-cache -name "*.pcm" | wc -l | grep 2
+// XFAIL: target={{.*}}-zos{{.*}}
+
// Verify that there are only two variants and that the expected merges have
// happened.
diff --git a/clang/test/Parser/c11-keywords.c b/clang/test/Parser/c11-keywords.c
index 2621e1a1a8595d..72df636841ade4 100644
--- a/clang/test/Parser/c11-keywords.c
+++ b/clang/test/Parser/c11-keywords.c
@@ -10,9 +10,11 @@ extern _Noreturn void exit(int); /* compat-warning {{'_Noreturn' is incompatible
*/
void func(void) {
+#ifndef __MVS__
static _Thread_local int tl; /* compat-warning {{'_Thread_local' is incompatible with C standards before C11}}
ext-warning {{'_Thread_local' is a C11 extension}}
*/
+#endif
_Alignas(8) char c; /* compat-warning {{'_Alignas' is incompatible with C standards before C11}}
ext-warning {{'_Alignas' is a C11 extension}}
*/
diff --git a/clang/test/SemaCXX/no_destroy.cpp b/clang/test/SemaCXX/no_destroy.cpp
index fcff4dd310c838..73441ec3584d0a 100644
--- a/clang/test/SemaCXX/no_destroy.cpp
+++ b/clang/test/SemaCXX/no_destroy.cpp
@@ -5,6 +5,8 @@
// RUN: %clang_cc1 -fexceptions -fc++-static-destructors=thread-local -verify=expected,thread-local-dtors %s
// RUN: %clang_cc1 -fexceptions -verify=expected,thread-local-dtors,all-dtors %s
+// XFAIL: target=s390x-ibm-zos
+
struct SecretDestructor {
private: ~SecretDestructor(); // expected-note + {{private}}
};
>From ece4388cecb35c2665cef88dd7874090775522bd Mon Sep 17 00:00:00 2001
From: Sean Perry <perry at ca.ibm.com>
Date: Wed, 21 Oct 2026 00:42:48 -0400
Subject: [PATCH 11/17] Shouldn't fail
---
clang/test/SemaCXX/no_destroy.cpp | 2 --
1 file changed, 2 deletions(-)
diff --git a/clang/test/SemaCXX/no_destroy.cpp b/clang/test/SemaCXX/no_destroy.cpp
index 73441ec3584d0a..fcff4dd310c838 100644
--- a/clang/test/SemaCXX/no_destroy.cpp
+++ b/clang/test/SemaCXX/no_destroy.cpp
@@ -5,8 +5,6 @@
// RUN: %clang_cc1 -fexceptions -fc++-static-destructors=thread-local -verify=expected,thread-local-dtors %s
// RUN: %clang_cc1 -fexceptions -verify=expected,thread-local-dtors,all-dtors %s
-// XFAIL: target=s390x-ibm-zos
-
struct SecretDestructor {
private: ~SecretDestructor(); // expected-note + {{private}}
};
>From 73f0ec091ad9b40dd13b95420aa7758217250d33 Mon Sep 17 00:00:00 2001
From: Sean Perry <perry at ca.ibm.com>
Date: Wed, 21 Oct 2026 00:49:44 -0400
Subject: [PATCH 12/17] Shouldn't fail
---
clang/test/SemaCXX/no_destroy.cpp | 1 +
1 file changed, 1 insertion(+)
diff --git a/clang/test/SemaCXX/no_destroy.cpp b/clang/test/SemaCXX/no_destroy.cpp
index fcff4dd310c838..c1ab05a2bd9571 100644
--- a/clang/test/SemaCXX/no_destroy.cpp
+++ b/clang/test/SemaCXX/no_destroy.cpp
@@ -19,6 +19,7 @@ void locals() {
thread_local SecretDestructor sd4; // thread-local-dtors-error{{private}}
#ifdef __MVS__
// expected-error at -2 {{thread-local storage is not supported for the current target}}
+ // expected-error at -3 {{private}}
#endif
}
>From b119307e79f2fca8029d01de64f9d2184036010c Mon Sep 17 00:00:00 2001
From: Sean Perry <perry at ca.ibm.com>
Date: Wed, 21 Oct 2026 14:23:58 -0400
Subject: [PATCH 13/17] Handle no TLS on z/OS
---
clang/test/SemaCXX/no_destroy.cpp | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/clang/test/SemaCXX/no_destroy.cpp b/clang/test/SemaCXX/no_destroy.cpp
index c1ab05a2bd9571..130d37111def06 100644
--- a/clang/test/SemaCXX/no_destroy.cpp
+++ b/clang/test/SemaCXX/no_destroy.cpp
@@ -10,16 +10,21 @@ private: ~SecretDestructor(); // expected-note + {{private}}
};
SecretDestructor sd1; // all-dtors-error{{private}}
-thread_local SecretDestructor sd2; // thread-local-dtors-error{{private}}
+thread_local SecretDestructor sd2;
#ifdef __MVS__
// expected-error at -2 {{thread-local storage is not supported for the current target}}
+ // expected-error at -3 {{variable of type 'SecretDestructor' has private destructor}}
+#else
+ // thread-local-dtors-error at -5 {{private}}
#endif
void locals() {
static SecretDestructor sd3; // all-dtors-error{{private}}
- thread_local SecretDestructor sd4; // thread-local-dtors-error{{private}}
+ thread_local SecretDestructor sd4;
#ifdef __MVS__
// expected-error at -2 {{thread-local storage is not supported for the current target}}
- // expected-error at -3 {{private}}
+ // expected-error at -3 {{variable of type 'SecretDestructor' has private destructor}}
+#else
+ // thread-local-dtors-error at -5 {{private}}
#endif
}
>From 31073597142f91d16f829b0d7fc628129e3c62f5 Mon Sep 17 00:00:00 2001
From: Sean Perry <perry at ca.ibm.com>
Date: Wed, 21 Oct 2026 14:29:45 -0400
Subject: [PATCH 14/17] fix ups
---
clang/test/SemaCXX/no_destroy.cpp | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/clang/test/SemaCXX/no_destroy.cpp b/clang/test/SemaCXX/no_destroy.cpp
index 130d37111def06..1dbd422dea875d 100644
--- a/clang/test/SemaCXX/no_destroy.cpp
+++ b/clang/test/SemaCXX/no_destroy.cpp
@@ -13,7 +13,7 @@ SecretDestructor sd1; // all-dtors-error{{private}}
thread_local SecretDestructor sd2;
#ifdef __MVS__
// expected-error at -2 {{thread-local storage is not supported for the current target}}
- // expected-error at -3 {{variable of type 'SecretDestructor' has private destructor}}
+ // all-dtors-error at -3 {{private}}
#else
// thread-local-dtors-error at -5 {{private}}
#endif
@@ -22,7 +22,7 @@ void locals() {
thread_local SecretDestructor sd4;
#ifdef __MVS__
// expected-error at -2 {{thread-local storage is not supported for the current target}}
- // expected-error at -3 {{variable of type 'SecretDestructor' has private destructor}}
+ // expected-error at -3 {{private}}
#else
// thread-local-dtors-error at -5 {{private}}
#endif
>From 822545a0769aab719dc93a7ad1f20b2a8c17d1d3 Mon Sep 17 00:00:00 2001
From: Sean Perry <perry at ca.ibm.com>
Date: Wed, 21 Oct 2026 15:39:58 -0400
Subject: [PATCH 15/17] unsupported on z/OS
---
clang/test/Analysis/scan-build/help.test | 1 +
1 file changed, 1 insertion(+)
diff --git a/clang/test/Analysis/scan-build/help.test b/clang/test/Analysis/scan-build/help.test
index d1f17cd69f51d1..907f770e4f34de 100644
--- a/clang/test/Analysis/scan-build/help.test
+++ b/clang/test/Analysis/scan-build/help.test
@@ -1,3 +1,4 @@
+UNSUPPORTED: system-zos
RUN: %scan-build -h | FileCheck %s
RUN: %scan-build --help | FileCheck %s
>From e699d5d476e2bdf2a61de232d0ce9a63ef7a62da Mon Sep 17 00:00:00 2001
From: Sean Perry <perry at ca.ibm.com>
Date: Wed, 21 Oct 2026 15:55:03 -0400
Subject: [PATCH 16/17] fix Index tests
---
clang/tools/c-index-test/c-index-test.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/clang/tools/c-index-test/c-index-test.c b/clang/tools/c-index-test/c-index-test.c
index 4b3e105aa7aff5..a8989a9f47aefd 100644
--- a/clang/tools/c-index-test/c-index-test.c
+++ b/clang/tools/c-index-test/c-index-test.c
@@ -36,7 +36,9 @@ extern int indextest_perform_shell_execution(const char *command_line);
/* Utility functions. */
/******************************************************************************/
-#ifdef _MSC_VER
+#ifdef __MVS__
+#include <libgen.h>
+#elif _MSC_VER
char *basename(const char* path)
{
char* base1 = (char*)strrchr(path, '/');
>From 7fd8e81c246bb73988c914754c98b5c13e2c0442 Mon Sep 17 00:00:00 2001
From: Sean Perry <perry at ca.ibm.com>
Date: Wed, 21 Oct 2026 20:38:07 +0000
Subject: [PATCH 17/17] Suppres the warning from z/OS
---
clang/tools/c-index-test/c-index-test.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/clang/tools/c-index-test/c-index-test.c b/clang/tools/c-index-test/c-index-test.c
index a8989a9f47aefd..2cb544cc6a3e5e 100644
--- a/clang/tools/c-index-test/c-index-test.c
+++ b/clang/tools/c-index-test/c-index-test.c
@@ -1242,7 +1242,14 @@ static CXString GetCursorSource(CXCursor Cursor) {
clang_disposeString(source);
return createCXString("<invalid loc>");
}
+#ifdef __MVS__
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wincompatible-pointer-types-discards-qualifiers"
+#endif
b = basename(clang_getCString(source));
+#ifdef __MVS__
+#pragma clang diagnostic pop
+#endif
result = duplicateCXString(b);
clang_disposeString(source);
return result;
More information about the cfe-commits
mailing list