aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Driver/Driver.cpp
AgeCommit message (Collapse)AuthorFilesLines
2024-03-05[CUDA] Correctly set CUDA default architecture (#84017)Joseph Huber1-1/+1
Summary: We already had a special CUDA default that better tracked the state as of modern CUDA installations. Recently this was bumped up to `sm_52`, but there was a location that wasn't respecting this. Fix that.
2024-03-05Revert "Reland "[clang][modules] Print library module manifest path." (#82160)"Kazushi (Jam) Marukawa1-44/+0
This reverts commit 0c89427b99f6f6d7c217c70ff880ca097340f9a4.
2024-03-03[Driver] Remove InstallDir and getInstalledDir. NFCFangrui Song1-4/+3
Follow-up to #80527.
2024-03-03Reland "[clang][modules] Print library module manifest path." (#82160)Mark de Wever1-0/+44
This implements a way for the compiler to find the modules.json associated with the C++23 Standard library modules. This is based on a discussion in SG15. At the moment no Standard library installs this manifest. #75741 adds this feature in libc++. This reverts commit 82f424f766be00b037a706a835d0a0663a2680f1. Disables the tests on non-X86 platforms as suggested.
2024-02-21[InstallAPI] Set InstallAPI as a standalone tool instead of CC1 action (#82293)Cyndy Ishida1-15/+1
Installapi has important distinctions when compared to the clang driver, so much that, it doesn't make much sense to try to integrate into it. This patch partially reverts the CC1 action & driver support to replace with its own driver as a clang tool. For distribution, we could use `LLVM_TOOL_LLVM_DRIVER_BUILD` mechanism for integrating the functionality into clang such that the toolchain size is less impacted.
2024-02-15[clang] Fix two gcc warnings about unused variables [NFC]Mikael Holmen1-1/+1
Without the fix gcc warns like ../../clang/lib/Sema/SemaDecl.cpp:2963:24: warning: unused variable 'SupA' [-Wunused-variable] 2963 | else if (const auto *SupA = dyn_cast<SuppressAttr>(Attr)) | ^~~~ and ../../clang/lib/Driver/Driver.cpp:4192:17: warning: unused variable 'IAA' [-Wunused-variable] 4192 | if (auto *IAA = dyn_cast<InstallAPIJobAction>(Current)) { | ^~~ Remove the unused variables and change the "dyn_cast"s into "isa"s.
2024-02-13 [clang][InstallAPI] Introduce basic driver to write out tbd files (#81571)Cyndy Ishida1-1/+15
This introduces a basic outline of installapi as a clang driver option. It captures relevant information as cc1 args, which are common arguments already passed to the linker to encode into TBD file outputs. This is effectively an upstream for what already exists as `tapi installapi` in Xcode toolchains, but directly in Clang. This patch does not handle any AST traversing on input yet. InstallAPI is broadly an operation that takes a series of header files that represent a single dynamic library and generates a TBD file out of it which represents all the linkable symbols and necessary attributes for statically linking in clients. It is the linkable object in all Apple SDKs and when building dylibs in Xcode. `clang -installapi` also will support verification where it compares all the information recorded for the TBD files against the already built binary, to catch possible mismatches like when a declaration is missing a definition for an exported symbol.
2024-02-06[Driver] Check the environment version except wasm case. (#80783)ZijunZhaoCCK1-9/+11
Add isWasm() check for here: https://github.com/llvm/llvm-project/pull/78655#issuecomment-1928075569
2024-02-04[Driver] Report invalid target triple versions for all environment types. ↵ZijunZhaoCCK1-9/+10
(#78655) Followup for https://github.com/llvm/llvm-project/pull/75373 1. Make this feature not just available for android, but everyone. 2. Correct some target triples. 3. Add opencl to the environment type list.
2024-01-25[LTO] Fix fat-lto output for -c -emit-llvm. (#79404)Sean Fertile1-3/+3
Fix and add a test case for combining '-ffat-lto-objects -c -emit-llvm' options and fix a spelling mistake in same test.
2024-01-24[Driver] Use StringRef::consume_front (NFC)Kazu Hirata1-7/+3
2024-01-23Revert "[clang][modules] Print library module manifest path. (#76451)"Aaron Ballman1-44/+0
This reverts commit a301fb11014f9cfdf4ee8cada173c46a7677d9d3. The changes caused failures like: https://lab.llvm.org/buildbot/#/builders/91/builds/22189
2024-01-22[FatLTO] output of -ffat-lto-objects -S should be assembly. (#79041)Sean Fertile1-3/+4
Fat lto with -c compiles to an object file with the IR embedded in a section of the object, the combination of fat-lto with -S should then produce an assembly file equivalent of that. The IR output can still be genreated by using both -S and -emit-llvm.
2024-01-22[clang][modules] Print library module manifest path. (#76451)Mark de Wever1-0/+44
This implements a way for the compiler to find the modules.json associated with the C++23 Standard library modules. This is based on a discussion in SG15. At the moment no Standard library installs this manifest. #75741 adds this feature in libc++.
2024-01-22[HLSL][SPIR-V] Add support -fspv-target-env opt (#78611)Natalie Chouinard1-1/+14
Add the -fspv-target-env option to the clang-dxc compatibility driver to specify the SPIR-V target environment, which is propagated to the target Triple.
2024-01-19[Driver] Use SmallString::operator std::string (NFC)Kazu Hirata1-11/+11
2024-01-17[clang] Upstream XROS support in Clang (#78392)Jonas Devlieghere1-0/+1
Upstream XROS support in the clang frontend and driver.
2024-01-08Make clang report invalid target versions. (#75373)ZijunZhaoCCK1-0/+11
Clang always silently ignores garbage target versions and this makes debug harder. So clang will report when target versions are invalid.
2023-12-28[RISCV][NFC] Use RISCVISAInfo instead of string comparison (#76387)Wang Pengcheng1-4/+10
The arch string may not start with rv32/rv64 if we have supported profiles in `-march`.
2023-12-13[clang] Use StringRef::{starts,ends}_with (NFC) (#75149)Kazu Hirata1-11/+11
This patch replaces uses of StringRef::{starts,ends}with with StringRef::{starts,ends}_with for consistency with std::{string,string_view}::{starts,ends}_with in C++20. I'm planning to deprecate and eventually remove StringRef::{starts,ends}with.
2023-12-09[ADT] Rename SmallString::{starts,ends}with to {starts,ends}_with (#74916)Kazu Hirata1-1/+1
This patch renames {starts,ends}with to {starts,ends}_with for consistency with std::{string,string_view}::{starts,ends}_with in C++20. Since there are only a handful of occurrences, this patch skips the deprecation phase and simply renames them.
2023-12-06[clang driver] Remove a bit of redundant flang specific code [nfc]Philip Reames1-6/+0
getOptionVisibilityMask already returns options::FlangOption in FlangMode, so this assignment is entirely pointless.
2023-11-01[SPIRV] Add -spirv option to DXC driver (#65989)Natalie Chouinard1-0/+7
Add an option to target SPIR-V to the clang-dxc driver, which sets the target triple's architecture to logical SPIR-V. This does not yet address the need for a Vulkan target environment in the triple, tracked in Issue #70051. Depends on #70330
2023-10-25[Driver] Use StringSet::contains (NFC)Kazu Hirata1-1/+1
2023-10-19Let clang-cl support CUDA/HIP (#68921)Yaxun (Sam) Liu1-1/+4
clang-cl is a driver mode that accepts options of MSVC cl.exe as a drop-in replacement for cl.exe. Currently clang-cl accepts mixed clang style options and cl style options. To let clang-cl accept a clang-style option, just need to add visibility CLOption to that option. Currently nvcc can pass cl style options to cl.exe, which allows nvcc to compile C++ and CUDA programs with mixed nvcc and cl style options. On the other hand, clang cannot use mixed clang and cl style options to compile CUDA/HIP programs. This patch add visibility CLOption to options needed to compile CUDA/HIP programs. This allows clang-cl to compile CUDA/HIP programs with mixed clang and cl style options.
2023-10-03[HIP][Clang][Driver] Add Driver support for `hipstdpar`Alex Voicu1-1/+11
This patch adds the Driver changes needed for enabling HIP parallel algorithm offload on AMDGPU targets. What this change does can be summed up as follows: - add two flags, one for enabling `hipstdpar` compilation, the second enabling the optional allocation interposition mode; - the flags correspond to new LangOpt members; - if we are compiling or linking with --hipstdpar, we enable HIP; in the compilation case C and C++ inputs are treated as HIP inputs; - the ROCm / AMDGPU driver is augmented to look for and include an implementation detail forwarding header; we error out if the user requested `hipstdpar` but the header or its dependencies cannot be found. Tests for the behaviour described above are also added. Reviewed by: MaskRay, yaxunl Differential Revision: https://reviews.llvm.org/D155775
2023-09-13[clang][ARM] Enable --print-supported-extensions for ARM (#66083)David Spickett1-1/+2
``` $ ./bin/clang --target=arm-linux-gnueabihf --print-supported-extensions <...> All available -march extensions for ARM crc crypto sha2 aes dotprod <...> ``` This follows the format set by RISC-V and AArch64. As for AArch64, ARM doesn't have versioned extensions like RISC-V does. So there is only 1 column, which contains the name. Any extension without a "feature" is hidden as these cannot be used with -march.
2023-09-11[Driver] Do not generate error about unsupported target specific options ↵Maciej Gabka1-1/+6
when there is no compiler jobs The upstream commit: https://reviews.llvm.org/D151590 added a new flag to mark target specific compiler options. The side effect of it was that in cases when -### or -v is used without any input file, clang started emitting an error. It happened like that becasue there is no compilation actions created which could consume/verify these target specific options. This patch changes that error to a warning about unused option in situations when there is no actions and still generates error when there are actions. Fix for https://github.com/llvm/llvm-project/issues/64958 Differential Revision: https://reviews.llvm.org/D159361
2023-09-11[clang][AArch64] Add --print-supported-extensions support (#65466)David Spickett1-1/+2
This follows the RISC-V work done in 4b40ced4e5ba10b841516b3970e7699ba8ded572. This uses AArch64's target parser instead. We just list the names, without the "+" on them, which matches RISC-V's format. ``` $ ./bin/clang -target aarch64-linux-gnu --print-supported-extensions clang version 18.0.0 (https://github.com/llvm/llvm-project.git 154da8aec20719c82235a6957aa6e461f5a5e030) Target: aarch64-unknown-linux-gnu Thread model: posix InstalledDir: <...> All available -march extensions for AArch64 aes b16b16 bf16 brbe crc crypto cssc <...> ``` Since our extensions don't have versions in the same way there's just one column with the name in. Any extension without a feature name (including the special "none") is not listed as those cannot be passed to -march, they're just for the backend. For example the MTE extension can be added with "+memtag" but MTE2 and MTE3 do not have feature names so they cannot be added to -march. This does not attempt to tackle the fact that clang allows invalid combinations of AArch64 extensions, it simply lists the possible options. It's still up to the user to ask for something sensible. Equally, this has no context of what CPU is being selected. Neither does the RISC-V option, the user has to be aware of that. I've added a target parser test, and a high level clang test that checks RISC-V and AArch64 work and that Intel, that doesn't support this, shows the correct error.
2023-08-31[Driver] Report warnings for unclaimed TargetSpecific options for assembler ↵Fangrui Song1-1/+7
input This patch amends D151590 to not error for unlaimed TargetSpecific options for `-x assembler` input files. This input type causes Driver to construct tools::ClangAs (-fintegrated-as) or other assemblers (e.g. tools::gnutools::Assembler) Their ConstructJobs methods, unlike Clang::ConstructJobs, claim very few options. If an option is unclaimed, it either leads to a -Wunused-command-line-argument warning or an error (if `TargetSpecific` is set): ``` % clang '-###' --target=aarch64 -mbranch-protection=bti -c a.s clang: error: unsupported option '-mbranch-protection=' for target 'aarch64' ``` It seems that downgrading the diagnostic to warning is most useful as many users use CFLAGS even for `.s` files: ``` clang --target=aarch64 -mbranch-protection=bti -S a.c clang --target=aarch64 -mbranch-protection=bti -c a.s ``` I decide not to suppress the warning so that -Wunused-command-line-argument lovers still get a warning, and help projects use proper ASFLAGS/CFLAGS/etc. Note: `-mbranch-protection=bti a.S` currently has no warning as `-x assembler-with-cpp` instructs clangDriver to select tools::Clang and claim most options. Revert D159010 to demonstrate that we emit a warning for -mfpmath= for `-x assembler` input. Modify my AIX cleanup cd18efb61d759405956dbd30e4b5f2720d8e1783 to add an err_drv_unsupported_opt_for_target. Reviewed By: thesamesam Differential Revision: https://reviews.llvm.org/D159173
2023-08-31[RISCV] Add --print-supported-extensions support4vtomat1-11/+26
This revision supports --print-supported-extensions, it prints out all of the extensions and corresponding version supported. Reviewed By: craig.topper, kito-cheng Differential Revision: https://reviews.llvm.org/D146054
2023-08-29Delete CloudABI supportBrad Smith1-4/+0
After this D108637 and with FreeBSD -current and now 14 dropping support for CloudABI I think it is time to consider deleting the CloudABI support. Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D158920
2023-08-28[driver] Refactor getRuntimePaths. NFCShoaib Meenai1-10/+2
This used to be getRuntimePath till https://reviews.llvm.org/D115049 added a fallback search path for Android. As far as I can tell, the intent has always been to use the first existing path though instead of actually supporting multiple runtime paths. We can move the existence checks into getRuntimePath and have it return std::optional, which also makes the `--print-runtime-dir` behavior much cleaner. The motivation is a follow-up change to Android runtime path searches, which is much nicer with this in place. Reviewed By: phosek, MaskRay Differential Revision: https://reviews.llvm.org/D158475
2023-08-27Delete Ananas supportBrad Smith1-4/+0
After looking at this further I think the Ananas support should be removed. They stopped using Clang. There have never been any releases either; as in source only, and the backend is not maintained. Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D158946
2023-08-24[Driver] Remove Myriad.cppFangrui Song1-5/+1
I am trying to clean up GCCInstallationDetector::init and noticed that Myriad.cpp is the only toolchain using `ExtraTripleAliases`. This is a little overhead, but I figured that Myriad.cpp is unused. Its sanitizer runtime part was removed in 2021 by D104279. It seems time to retire it. Reviewed By: waltl Differential Revision: https://reviews.llvm.org/D158706
2023-08-24[Driver] Cleanup last vestiges of Minix / Contiki supportBrad Smith1-2/+1
Cleanup what is left after D158461. Reviewed by: MaskRay Differential Revision:
2023-08-23[Driver] Remove unlikely-working Minix.cpp and Contiki.cppFangrui Song1-8/+0
Minix is a ToolChain that was added back in 2010 but has been unmaintained with no test. The constructed command line contains /usr/gnu/include/c++/4.4.3 and CompilerRT-Generic which are unlikely working for a long time. Contiki is a barebone ToolChain that just enables safestack. This doesn't justify a new ToolChain. Remove these ToolChains so that their target triples will use Generic_ELF instead. If these developers feel like having an updated llvm-project is useful, fixing other build issues and adding a new ToolChain is much better than having the unmaintained ToolChains. Reviewed By: brad Differential Revision: https://reviews.llvm.org/D158461
2023-08-21[flang][driver] Disable Clang options in FlangAndrzej Warzynski1-1/+1
Restore the desired setting that was reverted in https://reviews.llvm.org/D158289. This is to be merged once Fortran tests in llvm-test-suite are updated accordingly: https://reviews.llvm.org/D158308. Differential Revision: https://reviews.llvm.org/D158307
2023-08-18Rename warn_drv_overriding_flag_option (-Woverriding-t-option) to ↵Fangrui Song1-2/+2
warn_drv_overriding_flag_option (-Woverriding-option) warn_drv_overriding_flag_option was added for clang-cl `/T*` options (D1290) and its group name was planned to be renamed to overriding-option. The name -Woverriding-t-option does not make sense for other uses, mostly related to -ffp-model= related diagnostics. Reviewed By: hans, skan, dexonsmith Differential Revision: https://reviews.llvm.org/D158137
2023-08-18[flang][driver] Partial revert of D157837Andrzej Warzynski1-2/+2
This is a partial revert of https://reviews.llvm.org/D157837 - it turns out that the LLVM test suite needs to be updated first not to use any of the unsupported Flang options: * https://github.com/llvm/llvm-test-suite Sample errors: ``` flang-new: error: unknown argument: '-fbounds-check' flang-new: error: unknown argument: '-fcheck=all' flang-new: error: unknown argument: '-fcheck-array-temporaries' ``` Once the test suite is updated, we can restore the reverted setting. Broken bot: * https://lab.llvm.org/buildbot/#/builders/197/builds/9001 Differential Revision: https://reviews.llvm.org/D158289
2023-08-17[flang][driver] Update the visibility of Clang options in FlangAndrzej Warzynski1-3/+1
Prior to D157151, there was no mechanism to "disable" unsupported Clang options in Flang. While the "help" text (`flang-new -help`) was indeed configured not to display such options, the Flang compiler driver would happily consume such options and only issue a warning when there was no logic to parse it: ``` flang-new -fno-experimental-relative-c++-abi-vtables file.f90 flang-new: warning: argument unused during compilation: '-fno-experimental-relative-c++-abi-vtables' ``` D157151 introduces visibility flags. In particular, all Clang options gain a visibility flag (`ClangOption`) that can be excluded when in Flang driver mode. This way the above invocation will lead to: ``` flang-new: error: unknown argument '-fno-experimental-relative-c++-abi-vtables'; did you mean '-Xclang -fno-experimental-relative-c++-abi-vtables'? ``` This won't work unless all options/flags supported by Flang have their visibility flags updated accordingly, hence the changes in Options.td. Moving forward, this change will allow Flang better control over the supported options. Depends on D157151 Differential Revision: https://reviews.llvm.org/D157837
2023-08-15[Driver][DXC] Handle -Fo and -Fc flagsJustin Bogner1-6/+32
This splits the backend and assemble actions for HLSL inputs and handles the options in GetNamedOutputPath instead of aliasing `-o`. This also moves how we default to emitting asm to stdout, since doing this in the HLSL toolchain rather than the driver pollutes how the clang driver works as well. When both options are specified we disable collapsing the assemble action and attempt to generate both outputs. Note that while this handles the driver aspects, we can't actually run in that mode for now since -cc1as doesn't understand DXIL as an input yet. Differential Revision: https://reviews.llvm.org/D157582
2023-08-15[Driver] Refactor to use llvm Option's new Visibility flagsJustin Bogner1-72/+40
This is a big refactor of the clang driver's option handling to use the Visibility flags introduced in https://reviews.llvm.org/D157149. There are a few distinct parts, but they can't really be split into separate commits and still be made to compile. 1. We split out some of the flags in ClangFlags to ClangVisibility. Note that this does not include any subtractive flags. 2. We update the Flag definitions and OptIn/OptOut constructs in Options.td by hand. 3. We introduce and use a script, update_options_td_flags, to ease migration of flag definitions in Options.td, and we run that on Options.td. I intend to remove this later, but I'm committing it so that downstream forks can use the script to simplify merging. 4. We update calls to OptTable in the clang driver, cc1as, flang, and clangd to use the visibility APIs instead of Include/Exclude flags. 5. We deprecate the Include/Exclude APIs and add a release note. *if you are running into conflicts with this change:* Note that https://reviews.llvm.org/D157150 may also be the culprit and if so it should be handled first. The script in `clang/utils/update_options_td_flags.py` can help. Take the downstream side of all conflicts and then run the following: ``` % cd clang/include/clang/Driver % ../../../utils/update_options_td_flags.py Options.td > Options.td.new % mv Options.td.new Options.td ``` This will hopefully be sufficient, please take a look at the diff. Differential Revision: https://reviews.llvm.org/D157151
2023-08-10[Driver][DXC] Treat stdin as HLSLJustin Bogner1-0/+2
Differential Revision: https://reviews.llvm.org/D157562
2023-08-09[llvm] Construct option's prefixed name at compile-timeJan Svoboda1-2/+2
Some Clang command-line handling code could benefit from the option's prefixed name being a `StringLiteral`. This patch changes the `llvm::opt` TableGen backend to generate and emit that into the .inc file. Depends on D157028. Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D157029
2023-08-02[Driver] Don't try to spell check unsupported optionsJustin Bogner1-13/+3
We currently spell check options that are listed as unsupported, but this doesn't make much sense. If an option is explicitly unsupported why would one that's spelled similarly be useful? It looks like the reason this was added was that we explicitly mark all `--something` flags as Unsupported rather than just leaving them undefined and treating them as unknown. Drop that handling so that we don't regress on things like misspelling `--help`. Differential Revision: https://reviews.llvm.org/D156925
2023-08-01[Driver] -###: exit with code 1 if hasErrorOccurredFangrui Song1-1/+1
The exit code for -### is inconsistent. Unrecognized options lead to exit code 1, as expected. However, most others errors (including invalid option value) lead to exit code 0, differing from GCC and most utilities. This is a longstanding quirk of -###, and we didn't fix it because many driver tests need adjustment. Change -### to be similar to -fdriver-only -v and exit with code 1. This requires fixing many driver tests, but the end result gives us stronger tests. * Existing `RUN: %clang -### ...` tests usually don't use `CHECK-NOT: error:` or `--implicit-check-not=error:`. If a change introduces an error, such a change usually cannot be detected. * Many folks contributing new tests don't know `-fdriver-only -v`. To test no driver error/warning for new tests, they can use the familiar `-### -Werror` instead of `-fdriver-only -v -Werror`. An incomplete list of prerequisite test improvement: * 2f79bb10461d114783a1548201928549ace09755: add -nogpulib to some AMDGPU tests * 9155e517e6e1cda474d0d0fa82f71696c325bc10: add --cuda-path= (test w/ and w/o /usr/local/cuda) * 80765ede5bbcca1364c2d4ae06127011eaba6389: -mcpu=native may return either 0 or 1, depending on whether `--target=` specifies a native target * abae53f43f0d1da8d8e421f4a628d7ec64d6e365: fix -fuse-ld=lld misuses (test w/o and w/o /usr/local/bin/ld.lld) * ab68df505e5bb8808ee44f53044b50ca7575098e: add -resource-dir= and -fvisibility=hidden to some -fsanitize=cfi tests * d5ca1602f64114f612ad5630f04e4aa90591c78d: --rtlib=platform without --unwindlib= may fail if CLANG_DEFAULT_UNWINDLIB=unwindlib Reviewed By: jhuber6, yaxunl, dblaikie Differential Revision: https://reviews.llvm.org/D156363
2023-07-30Revert D156363 "[Driver] -###: exit with code 1 if hasErrorOccurred"Fangrui Song1-1/+1
This reverts commit 8c3550b1a78fde7bf28f420da8447d9fde37017f. clang/test/Driver/fsanitize.c has a mysterious failure worth investigation.
2023-07-29[Driver] -###: exit with code 1 if hasErrorOccurredFangrui Song1-1/+1
The exit code for -### is inconsistent. Unrecognized options lead to exit code 1, as expected. However, most others errors (including invalid option value) lead to exit code 0, differing from GCC and most utilities. This is a longstanding quirk of -###, and we didn't fix it because many driver tests need adjustment. Change -### to be similar to -fdriver-only -v and exit with code 1. This requires fixing many driver tests, but the end result gives us stronger tests. * Existing `RUN: %clang -### ...` tests usually don't use `CHECK-NOT: error:` or `--implicit-check-not=error:`. If a change introduces an error, such a change usually cannot be detected. * Many folks contributing new tests don't know `-fdriver-only -v`. To test no driver error/warning for new tests, they can use the familiar `-### -Werror` instead of `-fdriver-only -v -Werror`. An incomplete list of prerequisite test improvement: * 2f79bb10461d114783a1548201928549ace09755: add -nogpulib to some AMDGPU tests * 9155e517e6e1cda474d0d0fa82f71696c325bc10: add --cuda-path= (test w/ and w/o /usr/local/cuda) * 80765ede5bbcca1364c2d4ae06127011eaba6389: -mcpu=native may return either 0 or 1, depending on whether `--target=` specifies a native target * abae53f43f0d1da8d8e421f4a628d7ec64d6e365: fix -fuse-ld=lld misuses (test w/o and w/o /usr/local/bin/ld.lld) Reviewed By: jhuber6, yaxunl, dblaikie Differential Revision: https://reviews.llvm.org/D156363
2023-07-28Revert D156363 "[Driver] -###: exit with code 1 if hasErrorOccurred"Fangrui Song1-1/+1
This reverts commit e39bf32b3bc2f0cc21d783ba789bd82553493875. Some tests have different behaviors depent on whether certain directories/files are present on the host. An incomplete list from https://lab.llvm.org/buildbot/#/builders/109/builds/70149 csky-toolchain.c riscv*-toolchain.c fuchsia.* hip-* ohos.c