[SystemZ] Fix wrong mask for float vec_insert (#192967)
This commit fixes an error in vec_insert, where the index masking
effectively made the last two float elements of a vector non-insertable.
co-authored-by: @Andreas-Krebbel
[runtimes][CMake] Move Fortran support code from flang-rt (#171610)
Common CMake code to be used by flang-rt and openmp to emit Flang module
files. Most of the code is not yet used within this PR.
Extracted out of #171515 for review by @petrhosek.
[AArch64][llvm] Remove support for FEAT_MPAMv2_VID
`FEAT_MPAMv2_VID` instructions and system registers, as introduced
in change d30f18d2c, are being removed at this time, as they've been
removed from the latest Arm ARM, which doesn't preclude them returning
in some form in future.
Other system registers introduced with `FEAT_MPAMv2` are unaffected,
and these continue to be ungated, but since `+mpamv2` gating is now empty,
I'm removing this superfluous gating code.
[Attributor] Clarify volatile null pointer behavior (NFCI) (#193190)
The comment was referring to volatile stores in particular, which
are specified as non-willreturn. However, allowing volatile accesses
on null (independently of null_pointer_is_valid) is a general
provision that is independent of the access kind.
The actual behavior was still correct, because volatile loads are
considered as writing inaccessible memory, so the mayWriteToMemory()
check was ultimately redundant.
Add a test to make sure volatile load is handled correctly.
[CIR] Make array decay and get_element op perserve address spaces (#192361)
This patch makes sure that the maybeBuildArrayDecay function takes
address spaces into account and makes the get_element op preserve the
address space of the base pointer.
Assisted-by: Cursor / claude-4.6-opus-high
[AMDGPU] Unmark wave reduce intrinsics for constant folding (#193142)
The `add`, `sub`, and `xor` wave reduction intrinsics
cannot be constant folded, as `add` and `sub` need
to be multipled by the number of active lanes, and
`xor` depends on the parity of the number of
active lanes.
AMDGPU/GlobalISel: RegbankLegalize rules for merge-like opcodes (#193026)
Move RegbankLegalize handling for G_BUILD_VECTOR, G_MERGE_VALUES and
G_CONCAT_VECTORS from AMDGPURegBankLegalize to AMDGPURegBankLegalizeRules
by implementing rules for all supported types.
[libc++] Fix any.cpp not compiling with the minimum header version >= 7 (#193183)
The namespace was accidentally closed outside the header version check
while it was opened inside the check. This moves the closing code into
the check.
[LICM] Remove unnecessary check during store hoisting (#187529)
When hoisting stores, we check for interfering uses. This is done
by getting the clobbering def for the use and checking whether it
is outside the loop, which implies that no store in the loop can
interfere with it.
However, in addition to that, we check that the memory use does
not occur before the store. I believe that this additional check
is unnecessary, as if the use could be affected by the store, the
clobber walk would have pointed to the memory phi, not outside the
loop.
I think this check was added because MemorySSA had trouble with
loop-carried dependencies in the past (like in #54682), but this
should no longer be a problem.
This allows store hoisting in cases where there are unrelated
loads before the store.
[llvm] Errorize DebuginfodFetcher for inspection at call-sites (#191191)
Failure to fetch debuginfod is rarely an error, but there are cases where
we want to distinguish error reasons down the line, for example in order
to test connection timeouts.
[LV][NFC] Remove unnecessary extra passes from some tests (#193155)
Many tests were running extra passes after loop-vectorize, but they made
no difference to the outcome. If tests don't require these extra passes,
then we shouldn't run them because it increases the testing time.
[AArch64][SelectionDAG] Improve codegen for and(sext(Op), splat(1)) (#192405)
For vector ops, post vector ops legalization,
`and(sext(Op), splat(1)) -> zext(Op)`
Acts as enabler for PR #192052 in some of the cases
[flang][debug] Handle USE statements inside modules (#186184)
Previously, we only generated `fir.use_stmt` when a USE statement was
inside a function. USE statements inside modules were not handled,
resulting in missing debug information for transitive module
dependencies.
The problem can be seen with the following testcase:
```
module mod_a
integer :: x = 10
end module mod_a
module mod_b
use mod_a
integer :: y = 20
end module mod_b
[16 lines not shown]
[clangd] [C++20] [Modules] Read module mappings from commands (#193158)
A problem in the design of supporting modules in clangd is, we assume
there is no duplicated module name for different module units in a
single project. But this is not techniquelly correct.
What ISO disallow is, duplicated module name with different module units
in a linked program. But in a project, we can have multiple program.
And also in practice, the program will still work if users hidden
certain symbols. Tools can't detect that.
After all, we need to support the duplicated module unit within
different module units. The solution in the patch is to lookup into the
compile commands in compilation database.
e.g.,
```C++
[28 lines not shown]
[MIR] Always print symbolic INLINEASM operands (#192991)
We don't need the flag now that all tests are updated to use symbolic
operands.
Remove the update_mir_regclass_numbers script as it shouldn't be needed
anymore.