lang/rust: fix build on armv7
We have previously (cf. PR 282663) disabled the has_thread_local feature
on armv7 to work around an rtld bug. The bug was fixed with D42415, but
the workaround remained. Earlier this year, rust started to fail to
build due to the workaround, as the fallback TLS implementation is
limited to the number of pthread TLS keys (256) and rust has started to
consume more and more of them. While a temporary workaround reducing
the hunger for TLS keys was implemented in 2026Q2, we can actually just
reenable has_thread_local to go back to how things are supposed to work.
PR: 294545
Approved by: mikael (rust)
MFH: no
[NFC][ObjectYAML][llvm-obj2yaml] Move the code for creating DXContainerYAML to lib/ObjectYAML (#197984)
This code is needed to implement DXContainer support for `llvm-pdbutil
pdb2yaml` in an upcoming PR.
[VPlan] Recognise single-scalar VPInstructions in isUniformAcrossVFsAndUFs (#194674)
The VPInstruction case of vputils::isUniformAcrossVFsAndUFs only
consults preservesUniformity(opcode), missing single-scalar opcodes like
VScale, ExplicitVectorLength, and ResumeForEpilogue. Mirror the
structure of vputils::isSingleScalar's VPInstruction case: also accept
VPI->isSingleScalar() and VPI->isVectorToScalar(), gated by
the existing all_of(operands, isUniformAcrossVFsAndUFs) recursion.
[lldb][windows] Make skipUnlessMSVC tolerate cl.exe not in PATH (#198290)
If `cl.exe` is not in the PATH, `subprocess.run([\"cl.exe\"])` raises
`FileNotFoundError`. This marks the test as `UNRESOLVED` instead of
`SKIPPED`.
This patch makes sure lit catches `FileNotFoundError` so the test is
skipped cleanly.
[LoopInterchange] Bail out if outer latch has PHI with more than one incoming values (#197675)
In the transformation phase of LoopInterchange, `simplifyLCSSAPhis`
replaces all PHI nodes in the outer loop latch with LCSSA PHIs. This
means that the transformation phase does not assume PHI nodes with more
than one incoming value. However, the outer loop latch can have more
than one predecessor, such as the outer loop header and the inner loop
latch, like below:
```llvm
outer.header:
br i1 %c, label %outer.latch, label %inner.header
inner.header:
...
inner.latch:
...
br label %outer.latch
[12 lines not shown]
[flang-rt] Add -Wno-fenv-access to flang-rt compile options (#198286)
A check recently added to clang will now flag uses of floating-point
exception routines. There are some calls to these functions in the flang
runtime. Since the flang runtime is compiled with the freshly built
clang, it now shows these warnings.
Since the CI build uses -Werror, this breaks the flang-rt build even
though no changes to the flang-rt have been made:
```
flang-rt/lib/runtime/main.cpp:20:3: error:
'feclearexcept' used without enabling floating-point exception behavior;
use 'pragma STDC FENV_ACCESS ON' or compile with
'-ffp-exception-behavior=maytrap' [-Werror,-Wfenv-access]
20 | std::feclearexcept(FE_ALL_EXCEPT);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
flang-rt/lib/runtime/main.cpp:25:3: error:
'fesetround' used without enabling floating-point exception behavior; use
'pragma STDC FENV_ACCESS ON' or compile with
[7 lines not shown]
[AArch64] Remove unused SDTypeProfile from AArch64InstrInfo.td (NFC) (#198269)
These became dead in earlier cleanups:
- SDT_AArch64unvec and SDT_AArch64binvec in b0b97e3b0507
- SDT_AArch64fcmpz in d7f3c3129344
- SDT_AArch64TLSDescCall in aea846182090
[flang][debug] Only import debug info for specified renamed variables (#194926)
Given the following:
USE mod, ONLY : alias => var
Currently, flang will create a DW_TAG_imported_module tag for mod when
it should only be creating a list of DW_TAG_imported_declaration tags
for each imported variable. This causes erroneous variables from mod to
be visible in the debugger with undefined information.
The correct logic to do this was previously implemented at line 837 in
flang/lib/Optimizer/Transforms/AddDebugInfo.cpp under the comment "//
Process renames within ONLY clause". But this code block would never be
invoked as the function handleOnlyClause would never be called as only
one of renames or ONLY clauses could be present at once, not both. This
commit fixes the logic and allows the proper code block to be called.
Fixes #180836
Change CH_LOCATE equality function to be named _eq
Reduce risk of using e.g. memcmp there. _eq returns 1 for match and
0 for no match. Also make all arguemnts const. This makes it a bit
unclear which argument is which. First argument is from the hash table
the second argument is the arg passed to CH_LOCATE.
OK tb@
[flang-rt] Add -Wno-fenv-access to flang-rt compile options
A check recently added to clang will now flag uses of floating-point
exception routines. There are some calls to these functions in the
flang runtime. Since the flang runtime is compiled with the freshly
built clang, it now shows these warnings.
Since the CI build uses -Werror, this breaks the flang-rt build
even though no changes to the flang-rt were made:
flang-rt/lib/runtime/main.cpp:20:3: error:
'feclearexcept' used without enabling floating-point exception behavior;
use 'pragma STDC FENV_ACCESS ON' or compile with
'-ffp-exception-behavior=maytrap' [-Werror,-Wfenv-access]
20 | std::feclearexcept(FE_ALL_EXCEPT);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
flang-rt/lib/runtime/main.cpp:25:3: error:
'fesetround' used without enabling floating-point exception behavior; use
'pragma STDC FENV_ACCESS ON' or compile with
[7 lines not shown]