x11/contour: Unbreak build on -CURRENT
clang with debug assertions enabled (on -CURRENT) crashes when it
tries to compile this port. As a workaround use clang from ports when
system clang has debug assertions enabled.
x11/contour: Unbreak build on -CURRENT
clang with debug assertions enabled (on -CURRENT) crashes when it
tries to compile this port. As a workaround use clang from ports when
system clang has debug assertions enabled.
[NFCI][ELF][Mips] Refactor MipsGotSection to avoid explicit writes (#150730)
Splitting the VA / addend calculations between build and writeTo means
having to keep them in sync and duplicating some of the logic. Move all
such calculations into build, mirroring how the normal non-MIPS code in
Relocations.cpp ensures the addend and initial memory contents are set.
[LLVM][Coroutines] Introduce TBAA metadata for coro frame object (#176543)
This helps subsequent passes to determine that aliasing between frame
objects and all other types is impossible.
There were cases where this AA issue seriously harmed the performance
of compute intensive code running inside a coroutine, since it broke
LICM and caused it to reload frame data inside tight loops over and over.
Co-authored-by: Yoni Lavi <yoni.lavi at nextsilicon.com>
[lldb] Fix padding for settings in `apropos` output (#177295)
In the `apropos` output, commands are padded to the longest command so
that their descriptions are aligned. This PR does the same thing for the
settings.
Fixes #177284
[lldb] Improve error message when we can't save core (#177496)
When you specify a filename to `process save core`, we'll write it in
the current working directory. In Xcode the CWD is `/` and you can't
generally write there.
```
(lldb) process save-core --style full foo
error: failed to save core file for process: Read-only file system
```
This PR improves the error message by including the output file when we
can't save core. However, just printing the filename isn't that much
more helpful, because FileSystem::Resolve only makes a path absolute if
it exists.
```
error: failed to save core file for process to 'foo': Read-only file system
```
[6 lines not shown]
[orc-rt] Fix some Session::shutdown bugs. (#177528)
All calls to Session::shutdown were enquing their on-shutdown-complete
callbacks in Session's ShutdownInfo struct, but this queue is only
drained once by the thread that initiates shutdown. After the queue is
drained, subsequent calls to Session::shutdown were enquing their
callbacks in a queue that would never be drained.
This patch updates Session::shutdown to check whether shutdown has
completed already and, if so, run the on-shutdown-complete immediately.
This patch also fixes a concurrency bug: Session::shutdownComplete was
accessing SI->OnCompletes outside the session mutex, but this could lead
to corruption of SI->OnCompletes if a concurrent call to
Session::shutdown tried to enqueue a new callback to SI->OnCompletes
concurrently. This has been fixed by moving the SI->OnCompletes queue to
a new variable under the Session mutex, then draining the new queue
outside the mutex. (No testcase yet: this was discovered by observation,
and replicating the bug would depend on timing).
[RISCV] Improve vector pseudo table's experiences on translating between two different pseudo opcodes. NFC (#177232)
Sometimes we might need to translate from one vector pseudo -- like
`PseudoVFMUL_ALT_VV_M8_E16` -- to its `VFSUB_VV` counterpart, namely
`PseudoVFSUB_ALT_VV_M8_E16`. It's difficult to do this efficiently with
the current vector pseudo search table infrastructure. So I propose two
changes in this patch:
1. Currently both `RISCVVInversePseudosTable` and `RISCVVPseudosTable`
does not distinguish between F16 and BF16. This will be problematic
during lookup -- especially for `RISCVVInversePseudosTable`. So I added
a new single-bit field `IsAltFmt` into both tables.
2. It'd be great for `RISCVVPseudosTable` to return not just the base
instruction opcode but also LMUL & SEW (if there is any). Because the
alternative will require multiple additional steps (e.g. calling
`getLMul(TSFlags)`) -- especially for the SEW-specific pseudos -- that
are not really ergonomic. So I added `VLMul`, `SEW`, and `IsAltFmt` to
the result of `RISCVVPseudosTable::getPseudoInfo`. The downside of this
is of course bloating the table size, which is why I tried to mitigate
it with using bit fields.
This should be a NFC
[LangRef] Clarify semantics of undef in shufflevector masks (#171453)
The current phrasing of `shufflevector` in the language reference
states:
> A poison element in the mask vector specifies that the resulting
element is poison. For backwards-compatibility reasons, LLVM temporarily
also accepts undef mask elements, which will be interpreted the same way
as poison elements.
This is a bit ambiguous. Does it mean that an undef mask element
produces a poison result element, or an undef result element?
Per https://reviews.llvm.org/D148637, the answer is the former. I've
updated the docs to make this explicit.
As part of the same paragraph, the language reference also currently
states:
[7 lines not shown]