github-actions[bot] wrote:

<!--LLVM CODE FORMAT COMMENT: {darker}-->


:warning: Python code formatter, darker found issues in your code. :warning:

<details>
<summary>
You can test this locally with the following command:
</summary>

``````````bash
darker --check --diff -r HEAD~1...HEAD llvm/test/lit.cfg.py
``````````

</details>

<details>
<summary>
View the diff from darker here.
</summary>

``````````diff
--- lit.cfg.py  2025-07-29 19:50:09.000000 +0000
+++ lit.cfg.py  2025-07-29 19:53:29.299723 +0000
@@ -16,15 +16,21 @@
 
 # name: The name of this test suite.
 config.name = "LLVM"
 
 # testFormat: The test format to use to interpret tests.
-extra_substitutions = extra_substitutions = ([
-    (r"\| not FileCheck .*", "| tee /dev/null"),
-    (r"\| FileCheck .*", "| tee /dev/null")
-  ] if config.enable_profcheck else [])
-config.test_format = lit.formats.ShTest(not llvm_config.use_lit_shell, 
extra_substitutions)
+extra_substitutions = extra_substitutions = (
+    [
+        (r"\| not FileCheck .*", "| tee /dev/null"),
+        (r"\| FileCheck .*", "| tee /dev/null"),
+    ]
+    if config.enable_profcheck
+    else []
+)
+config.test_format = lit.formats.ShTest(
+    not llvm_config.use_lit_shell, extra_substitutions
+)
 
 # suffixes: A list of file extensions to treat as test files. This is overriden
 # by individual lit.local.cfg files in the test subdirectories.
 config.suffixes = [".ll", ".c", ".test", ".txt", ".s", ".mir", ".yaml", ".spv"]
 
@@ -63,31 +69,31 @@
 # Provide the path to asan runtime lib 'libclang_rt.asan_osx_dynamic.dylib' if
 # available. This is darwin specific since it's currently only needed on 
darwin.
 
 
 def get_asan_rtlib():
-  if (
-      not "Address" in config.llvm_use_sanitizer
-      or not "Darwin" in config.target_os
-      or not "x86" in config.host_triple
-  ):
-    return ""
-  try:
-    import glob
-  except:
-    print("glob module not found, skipping get_asan_rtlib() lookup")
-    return ""
-  # The libclang_rt.asan_osx_dynamic.dylib path is obtained using the relative
-  # path from the host cc.
-  host_lib_dir = os.path.join(os.path.dirname(config.host_cc), "../lib")
-  asan_dylib_dir_pattern = (
-      host_lib_dir + "/clang/*/lib/darwin/libclang_rt.asan_osx_dynamic.dylib"
-  )
-  found_dylibs = glob.glob(asan_dylib_dir_pattern)
-  if len(found_dylibs) != 1:
-    return ""
-  return found_dylibs[0]
+    if (
+        not "Address" in config.llvm_use_sanitizer
+        or not "Darwin" in config.target_os
+        or not "x86" in config.host_triple
+    ):
+        return ""
+    try:
+        import glob
+    except:
+        print("glob module not found, skipping get_asan_rtlib() lookup")
+        return ""
+    # The libclang_rt.asan_osx_dynamic.dylib path is obtained using the 
relative
+    # path from the host cc.
+    host_lib_dir = os.path.join(os.path.dirname(config.host_cc), "../lib")
+    asan_dylib_dir_pattern = (
+        host_lib_dir + "/clang/*/lib/darwin/libclang_rt.asan_osx_dynamic.dylib"
+    )
+    found_dylibs = glob.glob(asan_dylib_dir_pattern)
+    if len(found_dylibs) != 1:
+        return ""
+    return found_dylibs[0]
 
 
 llvm_config.use_default_substitutions()
 
 # Add site-specific substitutions.
@@ -110,41 +116,41 @@
 # triple appropriate for generating code for the current process) but because
 # we don't support COFF in MCJIT well enough for the tests, force ELF format on
 # Windows.  FIXME: the process target triple should be used here, but this is
 # difficult to obtain on Windows.
 if re.search(r"cygwin|windows-gnu|windows-msvc", config.host_triple):
-  lli_args = ["-mtriple=" + config.host_triple + "-elf"]
+    lli_args = ["-mtriple=" + config.host_triple + "-elf"]
 
 llc_args = []
 
 # Similarly, have a macro to use llc with DWARF even when the host is Windows
 if re.search(r"windows-msvc", config.target_triple):
-  llc_args = [" -mtriple=" + config.target_triple.replace("-msvc", "-gnu")]
+    llc_args = [" -mtriple=" + config.target_triple.replace("-msvc", "-gnu")]
 
 # Provide the path to asan runtime lib if available. On darwin, this lib needs
 # to be loaded via DYLD_INSERT_LIBRARIES before libLTO.dylib in case the files
 # to be linked contain instrumented sanitizer code.
 ld64_cmd = config.ld64_executable
 asan_rtlib = get_asan_rtlib()
 if asan_rtlib:
-  ld64_cmd = "DYLD_INSERT_LIBRARIES={} {}".format(asan_rtlib, ld64_cmd)
+    ld64_cmd = "DYLD_INSERT_LIBRARIES={} {}".format(asan_rtlib, ld64_cmd)
 if config.osx_sysroot:
-  ld64_cmd = "{} -syslibroot {}".format(ld64_cmd, config.osx_sysroot)
+    ld64_cmd = "{} -syslibroot {}".format(ld64_cmd, config.osx_sysroot)
 
 ocamlc_command = "%s ocamlc -cclib -L%s %s" % (
     config.ocamlfind_executable,
     config.llvm_lib_dir,
     config.ocaml_flags,
 )
 ocamlopt_command = "true"
 if config.have_ocamlopt:
-  ocamlopt_command = "%s ocamlopt -cclib -L%s -cclib -Wl,-rpath,%s %s" % (
-      config.ocamlfind_executable,
-      config.llvm_lib_dir,
-      config.llvm_lib_dir,
-      config.ocaml_flags,
-  )
+    ocamlopt_command = "%s ocamlopt -cclib -L%s -cclib -Wl,-rpath,%s %s" % (
+        config.ocamlfind_executable,
+        config.llvm_lib_dir,
+        config.llvm_lib_dir,
+        config.ocaml_flags,
+    )
 
 opt_viewer_cmd = "%s %s/tools/opt-viewer/opt-viewer.py" % (
     sys.executable,
     config.llvm_src_root,
 )
@@ -282,425 +288,423 @@
     ]
 )
 
 # Find (major, minor) version of ptxas
 def ptxas_version(ptxas):
-  ptxas_cmd = subprocess.Popen([ptxas, "--version"], stdout=subprocess.PIPE)
-  ptxas_out = ptxas_cmd.stdout.read().decode("ascii")
-  ptxas_cmd.wait()
-  match = re.search(r"release (\d+)\.(\d+)", ptxas_out)
-  if match:
-    return (int(match.group(1)), int(match.group(2)))
-  print("couldn't determine ptxas version")
-  return None
+    ptxas_cmd = subprocess.Popen([ptxas, "--version"], stdout=subprocess.PIPE)
+    ptxas_out = ptxas_cmd.stdout.read().decode("ascii")
+    ptxas_cmd.wait()
+    match = re.search(r"release (\d+)\.(\d+)", ptxas_out)
+    if match:
+        return (int(match.group(1)), int(match.group(2)))
+    print("couldn't determine ptxas version")
+    return None
 
 
 # Enable %ptxas and %ptxas-verify tools.
 # %ptxas-verify defaults to sm_60 architecture. It can be overriden
 # by specifying required one, for instance: %ptxas-verify -arch=sm_80.
 def enable_ptxas(ptxas_executable):
-  version = ptxas_version(ptxas_executable)
-  if version:
-    # ptxas is supposed to be backward compatible with previous
-    # versions, so add a feature for every known version prior to
-    # the current one.
-    ptxas_known_versions = [
-        (9, 0),
-        (9, 1),
-        (9, 2),
-        (10, 0),
-        (10, 1),
-        (10, 2),
-        (11, 0),
-        (11, 1),
-        (11, 2),
-        (11, 3),
-        (11, 4),
-        (11, 5),
-        (11, 6),
-        (11, 7),
-        (11, 8),
-        (12, 0),
-        (12, 1),
-        (12, 2),
-        (12, 3),
-        (12, 4),
-        (12, 5),
-        (12, 6),
-        (12, 8),
-    ]
-
-    def version_int(ver):
-      return ver[0] * 100 + ver[1]
-
-    # ignore ptxas if its version is below the minimum supported
-    # version
-    min_version = ptxas_known_versions[0]
-    if version_int(version) < version_int(min_version):
-      print(
-          "Warning: ptxas version {}.{} is not supported".format(
-              version[0], version[1]
-          )
-      )
-      return
-
-    for known_version in ptxas_known_versions:
-      if version_int(known_version) <= version_int(version):
-        major, minor = known_version
-        config.available_features.add("ptxas-{}.{}".format(major, minor))
-
-  config.available_features.add("ptxas")
-  tools.extend(
-      [
-          ToolSubst("%ptxas", ptxas_executable),
-          ToolSubst("%ptxas-verify", "{} -arch=sm_60 -c 
-".format(ptxas_executable)),
-      ]
-  )
+    version = ptxas_version(ptxas_executable)
+    if version:
+        # ptxas is supposed to be backward compatible with previous
+        # versions, so add a feature for every known version prior to
+        # the current one.
+        ptxas_known_versions = [
+            (9, 0),
+            (9, 1),
+            (9, 2),
+            (10, 0),
+            (10, 1),
+            (10, 2),
+            (11, 0),
+            (11, 1),
+            (11, 2),
+            (11, 3),
+            (11, 4),
+            (11, 5),
+            (11, 6),
+            (11, 7),
+            (11, 8),
+            (12, 0),
+            (12, 1),
+            (12, 2),
+            (12, 3),
+            (12, 4),
+            (12, 5),
+            (12, 6),
+            (12, 8),
+        ]
+
+        def version_int(ver):
+            return ver[0] * 100 + ver[1]
+
+        # ignore ptxas if its version is below the minimum supported
+        # version
+        min_version = ptxas_known_versions[0]
+        if version_int(version) < version_int(min_version):
+            print(
+                "Warning: ptxas version {}.{} is not supported".format(
+                    version[0], version[1]
+                )
+            )
+            return
+
+        for known_version in ptxas_known_versions:
+            if version_int(known_version) <= version_int(version):
+                major, minor = known_version
+                config.available_features.add("ptxas-{}.{}".format(major, 
minor))
+
+    config.available_features.add("ptxas")
+    tools.extend(
+        [
+            ToolSubst("%ptxas", ptxas_executable),
+            ToolSubst("%ptxas-verify", "{} -arch=sm_60 -c 
-".format(ptxas_executable)),
+        ]
+    )
 
 
 ptxas_executable = (
     os.environ.get("LLVM_PTXAS_EXECUTABLE", None) or config.ptxas_executable
 )
 if ptxas_executable:
-  enable_ptxas(ptxas_executable)
+    enable_ptxas(ptxas_executable)
 
 llvm_config.add_tool_substitutions(tools, config.llvm_tools_dir)
 
 # Targets
 
 config.targets = frozenset(config.targets_to_build.split())
 
 for arch in config.targets_to_build.split():
-  config.available_features.add(arch.lower() + "-registered-target")
+    config.available_features.add(arch.lower() + "-registered-target")
 
 # Features
 known_arches = ["x86_64", "mips64", "ppc64", "aarch64"]
 if config.host_ldflags.find("-m32") < 0 and any(
     config.llvm_host_triple.startswith(x) for x in known_arches
 ):
-  config.available_features.add("llvm-64-bits")
+    config.available_features.add("llvm-64-bits")
 
 config.available_features.add("host-byteorder-" + sys.byteorder + "-endian")
 if config.target_triple:
-  if re.match(
-      
r"(aarch64_be|arc|armeb|bpfeb|lanai|m68k|mips|mips64|powerpc|powerpc64|sparc|sparcv9|s390x|s390|tce|thumbeb)-.*",
-      config.target_triple,
-  ):
-    config.available_features.add("target-byteorder-big-endian")
-  else:
-    config.available_features.add("target-byteorder-little-endian")
+    if re.match(
+        
r"(aarch64_be|arc|armeb|bpfeb|lanai|m68k|mips|mips64|powerpc|powerpc64|sparc|sparcv9|s390x|s390|tce|thumbeb)-.*",
+        config.target_triple,
+    ):
+        config.available_features.add("target-byteorder-big-endian")
+    else:
+        config.available_features.add("target-byteorder-little-endian")
 
 if sys.platform in ["win32"]:
-  # ExecutionEngine, no weak symbols in COFF.
-  config.available_features.add("uses_COFF")
+    # ExecutionEngine, no weak symbols in COFF.
+    config.available_features.add("uses_COFF")
 else:
-  # Others/can-execute.txt
-  config.available_features.add("can-execute")
+    # Others/can-execute.txt
+    config.available_features.add("can-execute")
 
 # Detect Windows Subsystem for Linux (WSL)
 uname_r = platform.uname().release
 if uname_r.endswith("-Microsoft"):
-  config.available_features.add("wsl1")
+    config.available_features.add("wsl1")
 elif uname_r.endswith("microsoft-standard-WSL2"):
-  config.available_features.add("wsl2")
+    config.available_features.add("wsl2")
 
 # Loadable module
 if config.has_plugins:
-  config.available_features.add("plugins")
+    config.available_features.add("plugins")
 
 if config.build_examples:
-  config.available_features.add("examples")
+    config.available_features.add("examples")
 
 if config.linked_bye_extension:
-  config.substitutions.append(("%llvmcheckext", "CHECK-EXT"))
-  config.substitutions.append(("%loadbye", ""))
-  config.substitutions.append(("%loadnewpmbye", ""))
+    config.substitutions.append(("%llvmcheckext", "CHECK-EXT"))
+    config.substitutions.append(("%loadbye", ""))
+    config.substitutions.append(("%loadnewpmbye", ""))
 else:
-  config.substitutions.append(("%llvmcheckext", "CHECK-NOEXT"))
-  config.substitutions.append(
-      (
-          "%loadbye",
-          "-load={}/Bye{}".format(config.llvm_shlib_dir, 
config.llvm_shlib_ext),
-      )
-  )
-  config.substitutions.append(
-      (
-          "%loadnewpmbye",
-          "-load-pass-plugin={}/Bye{}".format(
-              config.llvm_shlib_dir, config.llvm_shlib_ext
-          ),
-      )
-  )
+    config.substitutions.append(("%llvmcheckext", "CHECK-NOEXT"))
+    config.substitutions.append(
+        (
+            "%loadbye",
+            "-load={}/Bye{}".format(config.llvm_shlib_dir, 
config.llvm_shlib_ext),
+        )
+    )
+    config.substitutions.append(
+        (
+            "%loadnewpmbye",
+            "-load-pass-plugin={}/Bye{}".format(
+                config.llvm_shlib_dir, config.llvm_shlib_ext
+            ),
+        )
+    )
 
 if config.linked_exampleirtransforms_extension:
-  config.substitutions.append(("%loadexampleirtransforms", ""))
+    config.substitutions.append(("%loadexampleirtransforms", ""))
 else:
-  config.substitutions.append(
-      (
-          "%loadexampleirtransforms",
-          "-load-pass-plugin={}/ExampleIRTransforms{}".format(
-              config.llvm_shlib_dir, config.llvm_shlib_ext
-          ),
-      )
-  )
+    config.substitutions.append(
+        (
+            "%loadexampleirtransforms",
+            "-load-pass-plugin={}/ExampleIRTransforms{}".format(
+                config.llvm_shlib_dir, config.llvm_shlib_ext
+            ),
+        )
+    )
 
 # Static libraries are not built if BUILD_SHARED_LIBS is ON.
 if not config.build_shared_libs and not config.link_llvm_dylib:
-  config.available_features.add("static-libs")
+    config.available_features.add("static-libs")
 
 if config.link_llvm_dylib:
-  config.available_features.add("llvm-dylib")
-  config.substitutions.append(
-      (
-          # libLLVM.so.19.0git
-          "%llvmdylib",
-          "{}/libLLVM{}.{}".format(
-              config.llvm_shlib_dir, config.llvm_shlib_ext, 
config.llvm_dylib_version
-          )
-      )
-  )
+    config.available_features.add("llvm-dylib")
+    config.substitutions.append(
+        (
+            # libLLVM.so.19.0git
+            "%llvmdylib",
+            "{}/libLLVM{}.{}".format(
+                config.llvm_shlib_dir, config.llvm_shlib_ext, 
config.llvm_dylib_version
+            ),
+        )
+    )
 
 if config.have_tf_aot:
-  config.available_features.add("have_tf_aot")
+    config.available_features.add("have_tf_aot")
 
 if config.have_tflite:
-  config.available_features.add("have_tflite")
+    config.available_features.add("have_tflite")
 
 if config.llvm_inliner_model_autogenerated:
-  config.available_features.add("llvm_inliner_model_autogenerated")
+    config.available_features.add("llvm_inliner_model_autogenerated")
 
 if config.llvm_raevict_model_autogenerated:
-  config.available_features.add("llvm_raevict_model_autogenerated")
+    config.available_features.add("llvm_raevict_model_autogenerated")
 
 
 def have_cxx_shared_library():
-  readobj_exe = lit.util.which("llvm-readobj", config.llvm_tools_dir)
-  if not readobj_exe:
-    print("llvm-readobj not found")
+    readobj_exe = lit.util.which("llvm-readobj", config.llvm_tools_dir)
+    if not readobj_exe:
+        print("llvm-readobj not found")
+        return False
+
+    try:
+        readobj_cmd = subprocess.Popen(
+            [readobj_exe, "--needed-libs", readobj_exe], stdout=subprocess.PIPE
+        )
+    except OSError:
+        print("could not exec llvm-readobj")
+        return False
+
+    readobj_out = readobj_cmd.stdout.read().decode("ascii")
+    readobj_cmd.wait()
+
+    regex = re.compile(r"(libc\+\+|libstdc\+\+|msvcp).*\.(so|dylib|dll)")
+    needed_libs = False
+    for line in readobj_out.splitlines():
+        if "NeededLibraries [" in line:
+            needed_libs = True
+        if "]" in line:
+            needed_libs = False
+        if needed_libs and regex.search(line.lower()):
+            return True
     return False
 
-  try:
-    readobj_cmd = subprocess.Popen(
-        [readobj_exe, "--needed-libs", readobj_exe], stdout=subprocess.PIPE
-    )
-  except OSError:
-    print("could not exec llvm-readobj")
-    return False
-
-  readobj_out = readobj_cmd.stdout.read().decode("ascii")
-  readobj_cmd.wait()
-
-  regex = re.compile(r"(libc\+\+|libstdc\+\+|msvcp).*\.(so|dylib|dll)")
-  needed_libs = False
-  for line in readobj_out.splitlines():
-    if "NeededLibraries [" in line:
-      needed_libs = True
-    if "]" in line:
-      needed_libs = False
-    if needed_libs and regex.search(line.lower()):
-      return True
-  return False
-
 
 if have_cxx_shared_library():
-  config.available_features.add("cxx-shared-library")
+    config.available_features.add("cxx-shared-library")
 
 if config.libcxx_used:
-  config.available_features.add("libcxx-used")
+    config.available_features.add("libcxx-used")
 
 # LLVM can be configured with an empty default triple
 # Some tests are "generic" and require a valid default triple
 if config.target_triple:
-  config.available_features.add("default_triple")
-  # Direct object generation
-  if not config.target_triple.startswith(("nvptx", "xcore")):
-    config.available_features.add("object-emission")
+    config.available_features.add("default_triple")
+    # Direct object generation
+    if not config.target_triple.startswith(("nvptx", "xcore")):
+        config.available_features.add("object-emission")
 
 if config.have_llvm_driver:
-  config.available_features.add("llvm-driver")
+    config.available_features.add("llvm-driver")
 
 import subprocess
 
 
 def have_ld_plugin_support():
-  if not os.path.exists(
-      os.path.join(config.llvm_shlib_dir, "LLVMgold" + config.llvm_shlib_ext)
-  ):
+    if not os.path.exists(
+        os.path.join(config.llvm_shlib_dir, "LLVMgold" + config.llvm_shlib_ext)
+    ):
+        return False
+
+    ld_cmd = subprocess.Popen(
+        [config.gold_executable, "--help"], stdout=subprocess.PIPE, 
env={"LANG": "C"}
+    )
+    ld_out = ld_cmd.stdout.read().decode()
+    ld_cmd.wait()
+
+    if not "-plugin" in ld_out:
+        return False
+
+    # check that the used emulations are supported.
+    emu_line = [l for l in ld_out.split("\n") if "supported emulations" in l]
+    if len(emu_line) != 1:
+        return False
+    emu_line = emu_line[0]
+    fields = emu_line.split(":")
+    if len(fields) != 3:
+        return False
+    emulations = fields[2].split()
+    if "elf_x86_64" not in emulations:
+        return False
+    if "elf32ppc" in emulations:
+        config.available_features.add("ld_emu_elf32ppc")
+
+    ld_version = subprocess.Popen(
+        [config.gold_executable, "--version"], stdout=subprocess.PIPE, 
env={"LANG": "C"}
+    )
+    if not "GNU gold" in ld_version.stdout.read().decode():
+        return False
+    ld_version.wait()
+
+    return True
+
+
+if have_ld_plugin_support():
+    config.available_features.add("ld_plugin")
+
+
+def have_ld64_plugin_support():
+    if not os.path.exists(
+        os.path.join(config.llvm_shlib_dir, "libLTO" + config.llvm_shlib_ext)
+    ):
+        return False
+
+    if config.ld64_executable == "":
+        return False
+
+    ld_cmd = subprocess.Popen([config.ld64_executable, "-v"], 
stderr=subprocess.PIPE)
+    ld_out = ld_cmd.stderr.read().decode()
+    ld_cmd.wait()
+
+    if "ld64" not in ld_out or "LTO" not in ld_out:
+        return False
+
+    return True
+
+
+if have_ld64_plugin_support():
+    config.available_features.add("ld64_plugin")
+
+
+def host_unwind_supports_jit():
+    # Do we expect the host machine to support JIT registration of clang's
+    # default unwind info format for the host (e.g. eh-frames, compact-unwind,
+    # etc.).
+
+    # Linux and the BSDs use DWARF eh-frames and all known unwinders support
+    # register_frame at minimum.
+    if platform.system() in ["Linux", "FreeBSD", "NetBSD"]:
+        return True
+
+    # Windows does not support frame info without the ORC runtime.
+    if platform.system() == "Windows":
+        return False
+
+    # On Darwin/x86-64 clang produces both eh-frames and compact-unwind, and
+    # libunwind supports register_frame. On Darwin/arm64 clang produces
+    # compact-unwind only, and JIT'd registration is not available before
+    # macOS 14.0.
+    if platform.system() == "Darwin":
+        assert "arm64" in config.host_triple or "x86_64" in config.host_triple
+
+        if "x86_64" in config.host_triple:
+            return True
+
+        # Must be arm64. Check the macOS version.
+        try:
+            osx_version = subprocess.check_output(
+                ["sw_vers", "-productVersion"], universal_newlines=True
+            )
+            osx_version = tuple(int(x) for x in osx_version.split("."))
+            if len(osx_version) == 2:
+                osx_version = (osx_version[0], osx_version[1], 0)
+            if osx_version >= (14, 0):
+                return True
+        except:
+            pass
+
+        return False
+
     return False
 
-  ld_cmd = subprocess.Popen(
-      [config.gold_executable, "--help"], stdout=subprocess.PIPE, env={"LANG": 
"C"}
-  )
-  ld_out = ld_cmd.stdout.read().decode()
-  ld_cmd.wait()
-
-  if not "-plugin" in ld_out:
-    return False
-
-  # check that the used emulations are supported.
-  emu_line = [l for l in ld_out.split("\n") if "supported emulations" in l]
-  if len(emu_line) != 1:
-    return False
-  emu_line = emu_line[0]
-  fields = emu_line.split(":")
-  if len(fields) != 3:
-    return False
-  emulations = fields[2].split()
-  if "elf_x86_64" not in emulations:
-    return False
-  if "elf32ppc" in emulations:
-    config.available_features.add("ld_emu_elf32ppc")
-
-  ld_version = subprocess.Popen(
-      [config.gold_executable, "--version"], stdout=subprocess.PIPE, 
env={"LANG": "C"}
-  )
-  if not "GNU gold" in ld_version.stdout.read().decode():
-    return False
-  ld_version.wait()
-
-  return True
-
-
-if have_ld_plugin_support():
-  config.available_features.add("ld_plugin")
-
-
-def have_ld64_plugin_support():
-  if not os.path.exists(
-      os.path.join(config.llvm_shlib_dir, "libLTO" + config.llvm_shlib_ext)
-  ):
-    return False
-
-  if config.ld64_executable == "":
-    return False
-
-  ld_cmd = subprocess.Popen([config.ld64_executable, "-v"], 
stderr=subprocess.PIPE)
-  ld_out = ld_cmd.stderr.read().decode()
-  ld_cmd.wait()
-
-  if "ld64" not in ld_out or "LTO" not in ld_out:
-    return False
-
-  return True
-
-
-if have_ld64_plugin_support():
-  config.available_features.add("ld64_plugin")
-
-def host_unwind_supports_jit():
-  # Do we expect the host machine to support JIT registration of clang's
-  # default unwind info format for the host (e.g. eh-frames, compact-unwind,
-  # etc.).
-
-  # Linux and the BSDs use DWARF eh-frames and all known unwinders support
-  # register_frame at minimum.
-  if platform.system() in [ "Linux", "FreeBSD", "NetBSD" ]:
-    return True
-
-  # Windows does not support frame info without the ORC runtime.
-  if platform.system() == "Windows":
-    return False
-
-  # On Darwin/x86-64 clang produces both eh-frames and compact-unwind, and
-  # libunwind supports register_frame. On Darwin/arm64 clang produces
-  # compact-unwind only, and JIT'd registration is not available before
-  # macOS 14.0.
-  if platform.system() == "Darwin":
-
-    assert (
-        "arm64" in config.host_triple
-        or "x86_64" in config.host_triple
-    )
-
-    if "x86_64" in config.host_triple:
-      return True
-
-    # Must be arm64. Check the macOS version.
-    try:
-      osx_version = subprocess.check_output(
-          ["sw_vers", "-productVersion"], universal_newlines=True
-      )
-      osx_version = tuple(int(x) for x in osx_version.split("."))
-      if len(osx_version) == 2:
-        osx_version = (osx_version[0], osx_version[1], 0)
-      if osx_version >= (14, 0):
-        return True
-    except:
-      pass
-
-    return False
-
-  return False
 
 if host_unwind_supports_jit():
-  config.available_features.add("host-unwind-supports-jit")
+    config.available_features.add("host-unwind-supports-jit")
 
 # Ask llvm-config about asserts
 llvm_config.feature_config(
     [
         ("--assertion-mode", {"ON": "asserts"}),
         ("--build-mode", {"[Dd][Ee][Bb][Uu][Gg]": "debug"}),
     ]
 )
 
 if "darwin" == sys.platform:
-  cmd = ["sysctl", "hw.optional.fma"]
-  sysctl_cmd = subprocess.Popen(cmd, stdout=subprocess.PIPE)
-
-  # Non zero return, probably a permission issue
-  if sysctl_cmd.wait():
-    print(
-        'Warning: sysctl exists but calling "{}" failed, defaulting to no 
fma3.'.format(
-            " ".join(cmd)
+    cmd = ["sysctl", "hw.optional.fma"]
+    sysctl_cmd = subprocess.Popen(cmd, stdout=subprocess.PIPE)
+
+    # Non zero return, probably a permission issue
+    if sysctl_cmd.wait():
+        print(
+            'Warning: sysctl exists but calling "{}" failed, defaulting to no 
fma3.'.format(
+                " ".join(cmd)
+            )
         )
-    )
-  else:
-    result = sysctl_cmd.stdout.read().decode("ascii")
-    if "hw.optional.fma: 1" in result:
-      config.available_features.add("fma3")
+    else:
+        result = sysctl_cmd.stdout.read().decode("ascii")
+        if "hw.optional.fma: 1" in result:
+            config.available_features.add("fma3")
 
 if not hasattr(sys, "getwindowsversion") or sys.getwindowsversion().build >= 
17063:
-  config.available_features.add("unix-sockets")
+    config.available_features.add("unix-sockets")
 
 # .debug_frame is not emitted for targeting Windows x64, aarch64/arm64, AIX, 
or Apple Silicon Mac.
 if not re.match(
     
r"^(x86_64|aarch64|arm64|powerpc|powerpc64).*-(windows-gnu|windows-msvc|aix)",
     config.target_triple,
 ) and not re.match(r"^arm64(e)?-apple-(macos|darwin)", config.target_triple):
-  config.available_features.add("debug_frame")
+    config.available_features.add("debug_frame")
 
 if config.enable_backtrace:
-  config.available_features.add("backtrace")
+    config.available_features.add("backtrace")
 
 if config.enable_threads:
-  config.available_features.add("thread_support")
+    config.available_features.add("thread_support")
 
 if config.have_libxml2:
-  config.available_features.add("libxml2")
+    config.available_features.add("libxml2")
 
 if config.have_curl:
-  config.available_features.add("curl")
+    config.available_features.add("curl")
 
 if config.have_httplib:
-  config.available_features.add("httplib")
+    config.available_features.add("httplib")
 
 if config.have_opt_viewer_modules:
-  config.available_features.add("have_opt_viewer_modules")
+    config.available_features.add("have_opt_viewer_modules")
 
 if config.expensive_checks:
-  config.available_features.add("expensive_checks")
+    config.available_features.add("expensive_checks")
 
 if "MemoryWithOrigins" in config.llvm_use_sanitizer:
-  config.available_features.add("use_msan_with_origins")
+    config.available_features.add("use_msan_with_origins")
 
 
 # Some tools support an environment variable "OBJECT_MODE" on AIX OS, which
 # controls the kind of objects they will support. If there is no "OBJECT_MODE"
 # environment variable specified, the default behaviour is to support 32-bit
 # objects only. In order to not affect most test cases, which expect to support
 # 32-bit and 64-bit objects by default, set the environment variable
 # "OBJECT_MODE" to 'any' by default on AIX OS.
 if "system-aix" in config.available_features:
-  config.environment["OBJECT_MODE"] = "any"
+    config.environment["OBJECT_MODE"] = "any"
 
 if config.has_logf128:
-  config.available_features.add("has_logf128")
+    config.available_features.add("has_logf128")

``````````

</details>


https://github.com/llvm/llvm-project/pull/151214
_______________________________________________
llvm-branch-commits mailing list
llvm-branch-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits

Reply via email to