[libclc] [libclc] Fix .cl tests in standalone build (PR #199164)
Wenju He via cfe-commits
cfe-commits at lists.llvm.org
Fri May 22 03:43:43 PDT 2026
https://github.com/wenju-he updated https://github.com/llvm/llvm-project/pull/199164
>From 19a2287424d6be4b0030df95fc5d21b695e43333 Mon Sep 17 00:00:00 2001
From: Wenju He <wenju.he at intel.com>
Date: Fri, 22 May 2026 07:04:24 +0200
Subject: [PATCH 1/4] [libclc] Diable .cl tests in standalone build
libclc standalone build puts libclc.bc in ${CMAKE_CURRENT_BINARY_DIR}/
${TARGET_TRIPLE} dir. check-libclc fails because .cl test is looking for
libclc in clang resource dir.
Disabling them is simple fix.
---
libclc/test/lit.cfg.py | 4 +++-
libclc/test/lit.site.cfg.py.in | 1 +
2 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/libclc/test/lit.cfg.py b/libclc/test/lit.cfg.py
index 22715411ea9d6..d6c9eb7428b29 100644
--- a/libclc/test/lit.cfg.py
+++ b/libclc/test/lit.cfg.py
@@ -17,7 +17,9 @@
config.test_format = lit.formats.ShTest()
# suffixes: A list of file extensions to treat as test files.
-config.suffixes = [".cl", ".test"]
+config.suffixes = [".test"]
+if not config.libclc_standalone_build:
+ config.suffixes.append(".cl")
# Exclude certain directories and files from test discovery
config.excludes = [
diff --git a/libclc/test/lit.site.cfg.py.in b/libclc/test/lit.site.cfg.py.in
index 3c9acfc0551f0..87a9626afbe53 100644
--- a/libclc/test/lit.site.cfg.py.in
+++ b/libclc/test/lit.site.cfg.py.in
@@ -9,6 +9,7 @@ config.libclc_obj_root = lit_config.substitute(path(r"@CMAKE_CURRENT_BINARY_DIR@
config.libclc_target = "@LIBCLC_TARGET@"
config.libclc_target_arch = "@LIBCLC_TARGET_ARCH@"
config.libclc_target_cpu = "@LIBCLC_TARGET_CPU@"
+config.libclc_standalone_build = "@LIBCLC_STANDALONE_BUILD@" == "TRUE"
import lit.llvm
lit.llvm.initialize(lit_config, config)
>From 71bc1368610716f49fabae024de113562fb62bb8 Mon Sep 17 00:00:00 2001
From: Wenju He <wenju.he at intel.com>
Date: Fri, 22 May 2026 12:22:47 +0200
Subject: [PATCH 2/4] Revert "[libclc] Diable .cl tests in standalone build"
This reverts commit 19a2287424d6be4b0030df95fc5d21b695e43333.
---
libclc/test/lit.cfg.py | 4 +---
libclc/test/lit.site.cfg.py.in | 1 -
2 files changed, 1 insertion(+), 4 deletions(-)
diff --git a/libclc/test/lit.cfg.py b/libclc/test/lit.cfg.py
index d6c9eb7428b29..22715411ea9d6 100644
--- a/libclc/test/lit.cfg.py
+++ b/libclc/test/lit.cfg.py
@@ -17,9 +17,7 @@
config.test_format = lit.formats.ShTest()
# suffixes: A list of file extensions to treat as test files.
-config.suffixes = [".test"]
-if not config.libclc_standalone_build:
- config.suffixes.append(".cl")
+config.suffixes = [".cl", ".test"]
# Exclude certain directories and files from test discovery
config.excludes = [
diff --git a/libclc/test/lit.site.cfg.py.in b/libclc/test/lit.site.cfg.py.in
index 87a9626afbe53..3c9acfc0551f0 100644
--- a/libclc/test/lit.site.cfg.py.in
+++ b/libclc/test/lit.site.cfg.py.in
@@ -9,7 +9,6 @@ config.libclc_obj_root = lit_config.substitute(path(r"@CMAKE_CURRENT_BINARY_DIR@
config.libclc_target = "@LIBCLC_TARGET@"
config.libclc_target_arch = "@LIBCLC_TARGET_ARCH@"
config.libclc_target_cpu = "@LIBCLC_TARGET_CPU@"
-config.libclc_standalone_build = "@LIBCLC_STANDALONE_BUILD@" == "TRUE"
import lit.llvm
lit.llvm.initialize(lit_config, config)
>From 9e003de0f30663b51f93d06127b9b0ae46681e5c Mon Sep 17 00:00:00 2001
From: Wenju He <wenju.he at intel.com>
Date: Fri, 22 May 2026 12:34:28 +0200
Subject: [PATCH 3/4] add --libclc-lib= to .cl tests in standalone build
---
libclc/test/conversion/convert.cl | 2 +-
libclc/test/geometric/cross.cl | 2 +-
libclc/test/integer/add_sat.cl | 2 +-
libclc/test/integer/sub_sat.cl | 2 +-
libclc/test/lit.cfg.py | 5 +++++
libclc/test/lit.site.cfg.py.in | 1 +
libclc/test/math/cos.cl | 2 +-
libclc/test/math/fabs.cl | 2 +-
libclc/test/math/rsqrt.cl | 18 +++++++++---------
libclc/test/misc/as_type.cl | 2 +-
libclc/test/update_libclc_tests.py | 25 +++++++++++++++++++++++--
libclc/test/work-item/get_group_id.cl | 2 +-
12 files changed, 46 insertions(+), 19 deletions(-)
diff --git a/libclc/test/conversion/convert.cl b/libclc/test/conversion/convert.cl
index 2e2a79e4ebb1e..0c0a1a3c88561 100644
--- a/libclc/test/conversion/convert.cl
+++ b/libclc/test/conversion/convert.cl
@@ -1,7 +1,7 @@
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 6
// REQUIRES: amdgpu-registered-target
-// RUN: %clang --target=%target -mcpu=%cpu -cl-std=CL3.0 -O2 -emit-llvm -S -o - %s | FileCheck %s --check-prefix=%check_prefix
+// RUN: %clang --target=%target -mcpu=%cpu %libclc_lib -cl-std=CL3.0 -O2 -emit-llvm -S -o - %s | FileCheck %s --check-prefix=%check_prefix
// AMDGCN-LABEL: define hidden <4 x i32> @float4_to_int4(
// AMDGCN-SAME: <4 x float> noundef [[X:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]] {
diff --git a/libclc/test/geometric/cross.cl b/libclc/test/geometric/cross.cl
index 41be4176f76cf..cbf4f28c35b8e 100644
--- a/libclc/test/geometric/cross.cl
+++ b/libclc/test/geometric/cross.cl
@@ -1,7 +1,7 @@
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 6
// REQUIRES: amdgpu-registered-target
-// RUN: %clang --target=%target -mcpu=%cpu -cl-std=CL3.0 -O2 -emit-llvm -S -o - %s | FileCheck %s --check-prefix=%check_prefix
+// RUN: %clang --target=%target -mcpu=%cpu %libclc_lib -cl-std=CL3.0 -O2 -emit-llvm -S -o - %s | FileCheck %s --check-prefix=%check_prefix
// AMDGCN-LABEL: define hidden <4 x float> @test_float4(
// AMDGCN-SAME: <4 x float> noundef [[X:%.*]], <4 x float> noundef [[Y:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]] {
diff --git a/libclc/test/integer/add_sat.cl b/libclc/test/integer/add_sat.cl
index 21d17423e3f68..acfadcb2a201b 100644
--- a/libclc/test/integer/add_sat.cl
+++ b/libclc/test/integer/add_sat.cl
@@ -1,7 +1,7 @@
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 6
// REQUIRES: amdgpu-registered-target
-// RUN: %clang --target=%target -mcpu=%cpu -cl-std=CL3.0 -O2 -emit-llvm -S -o - %s | FileCheck %s --check-prefix=%check_prefix
+// RUN: %clang --target=%target -mcpu=%cpu %libclc_lib -cl-std=CL3.0 -O2 -emit-llvm -S -o - %s | FileCheck %s --check-prefix=%check_prefix
// AMDGCN-LABEL: define hidden noundef signext i8 @test_char(
// AMDGCN-SAME: i8 noundef signext [[X:%.*]], i8 noundef signext [[Y:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]] {
diff --git a/libclc/test/integer/sub_sat.cl b/libclc/test/integer/sub_sat.cl
index 15096d57d66d7..13fcd35ebb557 100644
--- a/libclc/test/integer/sub_sat.cl
+++ b/libclc/test/integer/sub_sat.cl
@@ -1,7 +1,7 @@
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 6
// REQUIRES: amdgpu-registered-target
-// RUN: %clang --target=%target -mcpu=%cpu -cl-std=CL3.0 -O2 -emit-llvm -S -o - %s | FileCheck %s --check-prefix=%check_prefix
+// RUN: %clang --target=%target -mcpu=%cpu %libclc_lib -cl-std=CL3.0 -O2 -emit-llvm -S -o - %s | FileCheck %s --check-prefix=%check_prefix
// AMDGCN-LABEL: define hidden noundef signext i8 @test_char(
// AMDGCN-SAME: i8 noundef signext [[X:%.*]], i8 noundef signext [[Y:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]] {
diff --git a/libclc/test/lit.cfg.py b/libclc/test/lit.cfg.py
index 22715411ea9d6..be5cad7f7494e 100644
--- a/libclc/test/lit.cfg.py
+++ b/libclc/test/lit.cfg.py
@@ -59,11 +59,16 @@ def calculate_arch_features(arch_string):
llvm_config.add_tool_substitutions(["llvm-nm"], config.llvm_tools_dir)
+is_standalone = config.libclc_standalone_build.lower() == "true"
+path = os.path.join(config.libclc_library_dir, config.libclc_target, "libclc.bc")
+libclc_lib = f"--libclc-lib=:{path}" if is_standalone else ""
+
config.substitutions.extend(
[
("%library_dir", config.libclc_library_dir),
("%target", config.libclc_target),
("%cpu", config.libclc_target_cpu),
+ ("%libclc_lib", libclc_lib),
("%check_prefix", config.libclc_target_arch.upper()),
]
)
diff --git a/libclc/test/lit.site.cfg.py.in b/libclc/test/lit.site.cfg.py.in
index 3c9acfc0551f0..6b8b5456b2174 100644
--- a/libclc/test/lit.site.cfg.py.in
+++ b/libclc/test/lit.site.cfg.py.in
@@ -6,6 +6,7 @@ config.host_triple = "@LLVM_HOST_TRIPLE@"
config.llvm_tools_dir = lit_config.substitute(path(r"@LLVM_TOOLS_DIR@"))
config.libclc_library_dir = lit_config.substitute(path(r"@LIBCLC_OUTPUT_LIBRARY_DIR@"))
config.libclc_obj_root = lit_config.substitute(path(r"@CMAKE_CURRENT_BINARY_DIR@"))
+config.libclc_standalone_build = "@LIBCLC_STANDALONE_BUILD@"
config.libclc_target = "@LIBCLC_TARGET@"
config.libclc_target_arch = "@LIBCLC_TARGET_ARCH@"
config.libclc_target_cpu = "@LIBCLC_TARGET_CPU@"
diff --git a/libclc/test/math/cos.cl b/libclc/test/math/cos.cl
index 99d3acc2d714d..d22048d2932f2 100644
--- a/libclc/test/math/cos.cl
+++ b/libclc/test/math/cos.cl
@@ -1,7 +1,7 @@
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 6
// REQUIRES: amdgpu-registered-target
-// RUN: %clang --target=%target -mcpu=%cpu -cl-std=CL3.0 -O2 -emit-llvm -S -o - %s | FileCheck %s --check-prefix=%check_prefix
+// RUN: %clang --target=%target -mcpu=%cpu %libclc_lib -cl-std=CL3.0 -O2 -emit-llvm -S -o - %s | FileCheck %s --check-prefix=%check_prefix
// AMDGCN-LABEL: define hidden float @test_float(
// AMDGCN-SAME: float noundef [[X:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]] {
diff --git a/libclc/test/math/fabs.cl b/libclc/test/math/fabs.cl
index e512abd80468b..d44750e58ed01 100644
--- a/libclc/test/math/fabs.cl
+++ b/libclc/test/math/fabs.cl
@@ -1,7 +1,7 @@
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 6
// REQUIRES: amdgpu-registered-target
-// RUN: %clang --target=%target -mcpu=%cpu -cl-std=CL3.0 -O2 -emit-llvm -S -o - %s | FileCheck %s --check-prefix=%check_prefix
+// RUN: %clang --target=%target -mcpu=%cpu %libclc_lib -cl-std=CL3.0 -O2 -emit-llvm -S -o - %s | FileCheck %s --check-prefix=%check_prefix
// AMDGCN-LABEL: define hidden noundef float @test_float(
// AMDGCN-SAME: float noundef [[X:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]] {
diff --git a/libclc/test/math/rsqrt.cl b/libclc/test/math/rsqrt.cl
index 339c93ea67cf1..c9975047e0a0e 100644
--- a/libclc/test/math/rsqrt.cl
+++ b/libclc/test/math/rsqrt.cl
@@ -1,15 +1,15 @@
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 6
// REQUIRES: amdgpu-registered-target
-// RUN: %clang --target=%target -mcpu=%cpu -x cl -cl-std=CL3.0 -O2 -emit-llvm -S -o - %s | FileCheck %s --check-prefix=%check_prefix
+// RUN: %clang --target=%target -mcpu=%cpu %libclc_lib -x cl -cl-std=CL3.0 -O2 -emit-llvm -S -o - %s | FileCheck %s --check-prefix=%check_prefix
#pragma OPENCL EXTENSION cl_khr_fp16 : enable
// AMDGCN-LABEL: define hidden noundef half @test_half(
// AMDGCN-SAME: half noundef [[X:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]] {
// AMDGCN-NEXT: [[ENTRY:.*:]]
-// AMDGCN-NEXT: [[TMP0:%.*]] = tail call contract half @llvm.sqrt.f16(half [[X]]), !fpmath [[META12:![0-9]+]]
-// AMDGCN-NEXT: [[TMP1:%.*]] = fdiv contract half 1.000000e+00, [[TMP0]], !fpmath [[META13:![0-9]+]]
+// AMDGCN-NEXT: [[TMP0:%.*]] = tail call contract half @llvm.sqrt.f16(half [[X]]), !fpmath [[META13:![0-9]+]]
+// AMDGCN-NEXT: [[TMP1:%.*]] = fdiv contract half 1.000000e+00, [[TMP0]], !fpmath [[META14:![0-9]+]]
// AMDGCN-NEXT: ret half [[TMP1]]
//
half test_half(half x) {
@@ -19,8 +19,8 @@ half test_half(half x) {
// AMDGCN-LABEL: define hidden noundef float @test_float(
// AMDGCN-SAME: float noundef [[X:%.*]]) local_unnamed_addr #[[ATTR0]] {
// AMDGCN-NEXT: [[ENTRY:.*:]]
-// AMDGCN-NEXT: [[TMP0:%.*]] = tail call contract float @llvm.sqrt.f32(float [[X]]), !fpmath [[META14:![0-9]+]]
-// AMDGCN-NEXT: [[TMP1:%.*]] = fdiv contract float 1.000000e+00, [[TMP0]], !fpmath [[META15:![0-9]+]]
+// AMDGCN-NEXT: [[TMP0:%.*]] = tail call contract float @llvm.sqrt.f32(float [[X]]), !fpmath [[META15:![0-9]+]]
+// AMDGCN-NEXT: [[TMP1:%.*]] = fdiv contract float 1.000000e+00, [[TMP0]], !fpmath [[META16:![0-9]+]]
// AMDGCN-NEXT: ret float [[TMP1]]
//
float test_float(float x) {
@@ -38,8 +38,8 @@ double test_double(double x) {
return rsqrt(x);
}
//.
-// AMDGCN: [[META12]] = !{float 1.500000e+00}
-// AMDGCN: [[META13]] = !{float 1.000000e+00}
-// AMDGCN: [[META14]] = !{float 3.000000e+00}
-// AMDGCN: [[META15]] = !{float 2.500000e+00}
+// AMDGCN: [[META13]] = !{float 1.500000e+00}
+// AMDGCN: [[META14]] = !{float 1.000000e+00}
+// AMDGCN: [[META15]] = !{float 3.000000e+00}
+// AMDGCN: [[META16]] = !{float 2.500000e+00}
//.
diff --git a/libclc/test/misc/as_type.cl b/libclc/test/misc/as_type.cl
index 25f9df2e11137..5f98df07d2a67 100644
--- a/libclc/test/misc/as_type.cl
+++ b/libclc/test/misc/as_type.cl
@@ -1,7 +1,7 @@
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 6
// REQUIRES: amdgpu-registered-target
-// RUN: %clang --target=%target -mcpu=%cpu -cl-std=CL3.0 -O2 -emit-llvm -S -o - %s | FileCheck %s --check-prefix=%check_prefix
+// RUN: %clang --target=%target -mcpu=%cpu %libclc_lib -cl-std=CL3.0 -O2 -emit-llvm -S -o - %s | FileCheck %s --check-prefix=%check_prefix
// AMDGCN-LABEL: define hidden noundef <4 x i32> @test_float4_as_int4(
// AMDGCN-SAME: <4 x float> noundef [[X:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]] {
diff --git a/libclc/test/update_libclc_tests.py b/libclc/test/update_libclc_tests.py
index c0519088dd782..d5e43b420b816 100755
--- a/libclc/test/update_libclc_tests.py
+++ b/libclc/test/update_libclc_tests.py
@@ -64,10 +64,11 @@ def replace_in_file(path: Path, triple: str, cpu: str, check_prefix: str):
if cpu:
content = content.replace(b"%cpu", cpu.encode())
content = content.replace(b"%check_prefix", check_prefix.encode())
+ content = content.replace(b"%libclc_lib", b"")
path.write_bytes(content)
-def revert_in_file(path: Path, triple: str, cpu: str, check_prefix: str):
+def revert_in_file(path: Path, triple: str, cpu: str, check_prefix: str, original: bytes):
# Only revert in the RUN line context, not in generated CHECK lines.
content = path.read_bytes()
content = content.replace(f"--target={triple}".encode(), b"--target=%target")
@@ -76,6 +77,8 @@ def revert_in_file(path: Path, triple: str, cpu: str, check_prefix: str):
content = content.replace(
f"--check-prefix={check_prefix}".encode(), b"--check-prefix=%check_prefix"
)
+ if b"%libclc_lib" in original:
+ content = _restore_libclc_lib(content, original)
path.write_bytes(content)
@@ -94,7 +97,25 @@ def file_requires_feature(path: Path, feature: str) -> bool:
return False
+def _restore_libclc_lib(content: bytes, original: bytes) -> bytes:
+ RUN_MARKERS = (b"// RUN:", b"; RUN:")
+ orig_run_lines = [
+ l for l in original.splitlines(keepends=True)
+ if any(l.lstrip().startswith(m) for m in RUN_MARKERS)
+ ]
+ curr_lines = content.splitlines(keepends=True)
+ curr_run_indices = [
+ i for i, l in enumerate(curr_lines)
+ if any(l.lstrip().startswith(m) for m in RUN_MARKERS)
+ ]
+ result = list(curr_lines)
+ for idx, orig_line in zip(curr_run_indices, orig_run_lines):
+ result[idx] = orig_line
+ return b"".join(result)
+
+
def process_file(cl_file: Path, triple: str, cpu: str, check_prefix: str) -> bool:
+ original = cl_file.read_bytes()
replace_in_file(cl_file, triple, cpu, check_prefix)
cmd = [
sys.executable,
@@ -108,7 +129,7 @@ def process_file(cl_file: Path, triple: str, cpu: str, check_prefix: str) -> boo
ok = result.returncode == 0
if not ok:
print(f" FAILED: {result.stderr.strip()}", file=sys.stderr)
- revert_in_file(cl_file, triple, cpu, check_prefix)
+ revert_in_file(cl_file, triple, cpu, check_prefix, original)
return ok
diff --git a/libclc/test/work-item/get_group_id.cl b/libclc/test/work-item/get_group_id.cl
index 1818662c60be1..6afaa3a4a3368 100644
--- a/libclc/test/work-item/get_group_id.cl
+++ b/libclc/test/work-item/get_group_id.cl
@@ -1,7 +1,7 @@
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 6
// REQUIRES: amdgpu-registered-target
-// RUN: %clang --target=%target -mcpu=%cpu -cl-std=CL3.0 -O2 -emit-llvm -S -o - %s | FileCheck %s --check-prefix=%check_prefix
+// RUN: %clang --target=%target -mcpu=%cpu %libclc_lib -cl-std=CL3.0 -O2 -emit-llvm -S -o - %s | FileCheck %s --check-prefix=%check_prefix
// AMDGCN-LABEL: define hidden range(i64 0, 4294967296) i64 @test(
// AMDGCN-SAME: ) local_unnamed_addr #[[ATTR0:[0-9]+]] {
>From 69b5ac9c265c06ec872184faa751523dee7b189f Mon Sep 17 00:00:00 2001
From: Wenju He <wenju.he at intel.com>
Date: Fri, 22 May 2026 12:42:27 +0200
Subject: [PATCH 4/4] update_libclc_tests.py: save RUN line before replace
---
libclc/test/update_libclc_tests.py | 44 ++++++++++--------------------
1 file changed, 14 insertions(+), 30 deletions(-)
diff --git a/libclc/test/update_libclc_tests.py b/libclc/test/update_libclc_tests.py
index d5e43b420b816..5ad78eed549ff 100755
--- a/libclc/test/update_libclc_tests.py
+++ b/libclc/test/update_libclc_tests.py
@@ -68,18 +68,13 @@ def replace_in_file(path: Path, triple: str, cpu: str, check_prefix: str):
path.write_bytes(content)
-def revert_in_file(path: Path, triple: str, cpu: str, check_prefix: str, original: bytes):
- # Only revert in the RUN line context, not in generated CHECK lines.
- content = path.read_bytes()
- content = content.replace(f"--target={triple}".encode(), b"--target=%target")
- if cpu:
- content = content.replace(f"-mcpu={cpu}".encode(), b"-mcpu=%cpu")
- content = content.replace(
- f"--check-prefix={check_prefix}".encode(), b"--check-prefix=%check_prefix"
- )
- if b"%libclc_lib" in original:
- content = _restore_libclc_lib(content, original)
- path.write_bytes(content)
+def _run_line_indices(content: bytes) -> list:
+ RUN_MARKERS = (b"// RUN:", b"; RUN:")
+ return [
+ i
+ for i, l in enumerate(content.splitlines(keepends=True))
+ if any(l.lstrip().startswith(m) for m in RUN_MARKERS)
+ ]
def file_requires_feature(path: Path, feature: str) -> bool:
@@ -97,25 +92,10 @@ def file_requires_feature(path: Path, feature: str) -> bool:
return False
-def _restore_libclc_lib(content: bytes, original: bytes) -> bytes:
- RUN_MARKERS = (b"// RUN:", b"; RUN:")
- orig_run_lines = [
- l for l in original.splitlines(keepends=True)
- if any(l.lstrip().startswith(m) for m in RUN_MARKERS)
- ]
- curr_lines = content.splitlines(keepends=True)
- curr_run_indices = [
- i for i, l in enumerate(curr_lines)
- if any(l.lstrip().startswith(m) for m in RUN_MARKERS)
- ]
- result = list(curr_lines)
- for idx, orig_line in zip(curr_run_indices, orig_run_lines):
- result[idx] = orig_line
- return b"".join(result)
-
-
def process_file(cl_file: Path, triple: str, cpu: str, check_prefix: str) -> bool:
original = cl_file.read_bytes()
+ orig_lines = original.splitlines(keepends=True)
+ saved_run = {i: orig_lines[i] for i in _run_line_indices(original)}
replace_in_file(cl_file, triple, cpu, check_prefix)
cmd = [
sys.executable,
@@ -129,7 +109,11 @@ def process_file(cl_file: Path, triple: str, cpu: str, check_prefix: str) -> boo
ok = result.returncode == 0
if not ok:
print(f" FAILED: {result.stderr.strip()}", file=sys.stderr)
- revert_in_file(cl_file, triple, cpu, check_prefix, original)
+ updated = cl_file.read_bytes()
+ updated_lines = updated.splitlines(keepends=True)
+ for i, line in saved_run.items():
+ updated_lines[i] = line
+ cl_file.write_bytes(b"".join(updated_lines))
return ok
More information about the cfe-commits
mailing list