[X86] Add aligned atomic vector store tests wider than 128 bits (NFC) (#202537)
These >128-bit stores are expanded to __atomic_store libcalls regardless
of alignment, since x86 caps atomic ops at 128 bits.
[SelectionDAG] Fold extracts of subvector inserts
Fold extract_subvector(insert_subvector(...)) when the extraction is
outside the inserted subvector or the inserted subvector only amends
the extracted
In particular,
1. vA extract_subvector (vB insert_subvector(vB X, vC Y, C1), C2) =>
vA extract_subvector(X, C2) when [C2, C2 + A) intersect [C1, C1 + C)
is the empty set
2. ... => extract_subvector(Y, C2 - C1) if [C2, C2 + Y) is a subset of
[C1, C1 + C) - an existing simplification
3. ... => vA insert_subvector(vA extract_subvector(vB X, C2), vC Y, C1 - C2)
if [C1, C1 + C) is a subset of [C2, C2 + A) - that is, if you're only
updating the extracted sub-part.
Adds a regresssion tests for an infinite SelectionDAG cycle that is
fixed by a stack of commits that ends with this one.
[3 lines not shown]
[bazel] Added targets for flang, flang-rt, and openmp (#202791)
This change adds the necessary targets for a fortran toolchain. `flang`
for the compiler itself, `flang-rt` for executable support, and `openmp`
for `!$omp` directives within fortran code.
[Demangle] Implement type D demangling and add all D basic type encodings (#202834)
This patch adds type name output to D demangler `parseType` and adds all
D basic type encodings to it.
[X86] Fix musttail miscompilation when arguments are passed on the stack (#199691)
After commit 782bf6a, a musttail call with matching CC was always
treated as a sibcall, which skips the stores of outgoing stack
arguments. Any non-forwarded stack argument was silently dropped.
Only treat musttail as a sibcall when every argument is in a register;
otherwise fall back to full tail-call lowering.
Fix #199224
---------
Co-authored-by: Reid Kleckner <rkleckner at nvidia.com>
[lldb] Remove ValueObjectRecognizerSynthesizedValue::IsSynthetic override (#199117)
Removes the `IsSynthetic` override on
`ValueObjectRecognizerSynthesizedValue`. This class does not also
override `GetNonSyntheticValue`.
There was a bug in which code assumed that when `IsSynthetic()` returned
true, that `GetNonSyntheticValue` would produce a different value
object. However the default behavior of `GetNonSyntheticValue` is to
return itself.
It seems to me that either:
1. `ValueObjectSynthetic` should be the only class to override
`IsSynthetic` to true
2. or, that classes which override `IsSynthetic` should also override
`GetNonSyntheticValue`
In either case, I think it's best to remove this `IsSynthetic` on
`ValueObjectRecognizerSynthesizedValue`.
[SelectionDAG] Fold extracts spanning concat operands (#200936)
Factor the extract_subvector-of-CONCAT_VECTORS logic and handle
extracts that cover multiple whole concat operands by rebuilding a
smaller concat directly.
AI note: an LLM generated the code and the test, I've read them
Co-Authored-By: OpenAI Codex <codex at openai.com>
---------
Co-authored-by: OpenAI Codex <codex at openai.com>
[InstCombine] Fold copysign(floor(fabs(X)), X) to trunc(X) (#200836)
Fixes #200519.
Adds an InstCombine fold for the pattern `copysign(floor(fabs(X)), X)
--> trunc(X)`.