[flang] fix DIR IVDEP for array assignments inside loops (#177940)
The access attribute set on hlfir.assign for arrays was lost in
InlineHLFIRAssign.cpp. This patch propagates it to the creates loads and
stores.
[compiler-rt][aarch64][sme] Add SVE/FP variant of `__arm_sc_memcpy` (#127093)
When SVE is available use the `-sve` variant of memcpy from AOR for
`__arm_sc_memcpy`. From:
https://github.com/ARM-software/optimized-routines/blob/71e36403858ab3ff743fcde336fb31890e57af7e/string/aarch64/memcpy-sve.S
This implementation uses FPR/ZPR load/store instructions to do the copy,
so should not cause memory hazards if called in streaming mode (with the
memory later being accessed in the streaming mode with SVE/SME
instructions).
The implementation has been slightly modified from AOR to use local
labels (matching other compiler-rt functions) but still passes the
memcpy and memmove tests from AOR.
[analyzer][docs] Add basic description of checker 'core.CallAndMessage' (#177179)
The checker had very little documentation. Now a more detailed (but
still not much) description of the features and options is added.
[flang][OpenMP][DoConcurrent] Add `collapse` clause to generated `omp.loop_nest` op
Adds the collpase clause to the generated loop nest both on host and
device.
[mlir][emitc] Fix recurring operands in expression (#175535)
The pretty-printing for `emitc.expression` breaks for expressions taking
the same value as operand multiple times.
Passing the same value as operand more than once is redundant, and is
therefore not the canonical form of `emitc.expression`. However, since
transformations affecting `emitc.expression` operands may cause this to
happen, `emitc.expression` must retain its support for recurring
operands.
This PR fixes this issue by shadowing the region arguments only when the
operands are unique, printing and parsing an explicit basic block
otherwise. In addition, a canonicalization pattern removing recurring
operands is added.
Fixes https://github.com/llvm/llvm-project/issues/172952.
[flang][Lower] Fix UB in location handling (#177944)
Previously `prov` received the address of a variable allocated in stack
memory (the contents of `include`). `prov` would then access that memory
outside of the lifetime of that stack allocation: leading to UB.
This only manifested on thinLTO builds. No added test because
flang/test/Lower/location.f90 covers it (when thinLTO is enabled) and
there are bots guarding the thin-lto configuration.
Fixes #156629
Fixes #176404
(cherry picked from commit 9be7c1037f26146e469c85061d6685a9172c5de9)
[RISCV] Add ZZZ_ to some inline assembly vector register classes to sort them after VR/VRNoV0 in regclass enum. (#177087)
This prevents getCommonSubClass from finding them before VR/VRNoV0.
Fixes a crash reported post-commit in #171231. getCommonSubClass
returned one of these classes, but it doesn't have the same VTs as
VR/VRNoV0 leading to an assertion failure.
The subregister-undef-early-clobber.mir still ends up finding these
register classes in the InitUndef pass.
(cherry picked from commit 73a309e20e92ff8e9af295c81ee74a58b07a93ba)