[AArch64][GlobalISel] Use a concrete type for store merging. (#213740)
This is just to reduce the number of scalar types in the MIR, as the
value is between a constant and a store it should have little effect.
[CIR] Move array-ctor cleanup to properly cleanup temporaries (#213993)
This patch came out of self-build, any constructor temporary called
during the construction of an array element was being improperly cleaned
up (actually, no terminator?). This patch moves the RunCleanups RAII to
do so immediately in the body.
The OGCG/LLVM check lines are effectively equal, except OGCG uses a PHI
and we are doing so with an iterator loop, but the 'dtor called
immediately' is still correct.
[CIR] Reject a global carrying a function type (#214065)
The verifier was accepting a `cir.global` whose `sym_type` is a
function. The LLVM dialect global takes one too, so it survives to LLVM
IR translation and crashes instead of reporting an error.
`GlobalOp::verify()` now rejects it.
[SelectionDAG] Split masked div/rem operands with illegal masks (#214058)
PR description written by Codex
Split masked signed and unsigned division/remainder alongside illegal
vector masks to fix NVPTX SelectionDAG crashes. Covers all four
intrinsics and the original eight-lane reproducer; five focused LLVM
tests pass.
[OpenMP] Propagate PRESENT to pointee entries in mapper codegen (#210214)
For cases like:
```c
#pragma omp declare_mapper (default: S s) map(s.x, s.p[0:10])
S s1;
...
#pragma omp target_enter_data map(present, alloc: s1)
```
After "mapper-expansion", the behavior of the above should be equivalent
to:
```
#pragma omp target_enter_data map(present, alloc: s1.x) map(present, alloc: s.p[0:10])
```
i.e. The `present` map-type needs to be propagated to the map for the
[31 lines not shown]
[NFC][BoundsSafety] Give `counted_by_or_null`, `sized_by`, and `sized_by_or_null` their own documentation (#212877)
Previously the `counted_by`, `counted_by_or_null`, `sized_by`, and
`sized_by_or_null` attributes all pointed at a single `Documentation`
object (`CountedByDocs`). The generated `AttributeReference.rst`
therefore folded all four into one entry whose text described only
`counted_by` used on a C99 flexible array member.
This was misleading because the attributes differ in important ways that
went undocumented:
* `counted_by` counts *elements* whereas `sized_by` counts *bytes*.
* `counted_by` and `sized_by` require a null pointer to have a zero
count/size, while the `_or_null` variants allow a null pointer
regardless of the count or size.
* `counted_by` may be applied to a flexible array member, but
`sized_by`, `counted_by_or_null`, and `sized_by_or_null` apply to
pointers only.
[29 lines not shown]
[flang][OpenMP] Use 'present-modifier' instead of 'expectation' in 5.1
The 5.1 spec lists PRESENT as an alternative in a 'motion-modifier'.
The other alternatives are mapper and iterator. These already exist
as separate modifiers, so 'motion-modifier' would best be expressed
as a modifier group. While modifier groups are not implemented yet,
borrow 'present-modifier' from the 6.0 spec.
The 'expectation' modifier only existed in 5.2, it was replaced by
'present-modifier' in 6.0.
unit/cityhash: test the cityhash hash functions
Cover known answers, the 1/2/3-argument specialized forms against
cityhash4, and distinct inputs.
Reviewed-by: Rob Norris <rob.norris at truenas.com>
Reviewed-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Signed-off-by: Christos Longros <chris.longros at gmail.com>
Closes #18880
unit/sha2: add Monte Carlo test
SHAVS chain MD[i] = SHA(MD[i-3] || MD[i-2] || MD[i-1]) run for 1000
rounds, for SHA-256, SHA-512 and SHA-512/256. The seeds and expected
digests are the COUNT = 0 vectors from the NIST CAVP byte-oriented test
vectors (shabytetestvectors).
Reviewed-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Signed-off-by: Christos Longros <chris.longros at gmail.com>
Closes #18879
build: Fix release detection when build dir is not source dir
When building outside of the root source directory, configure fails to
detect that the source for the build is a git repository because the
build directory is checked if it is a git repository. Instead check
source directory and use the source directory for generating the
release. Check for the .nogitrelease file in the source directory too.
Reviewed-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Signed-off-by: Glenn Washburn <development at efficientek.com>
Closes #18891
[flang][OpenMP] Use 'linear-step' instead of 'step-simple-modifier' i… (#214041)
…n 5.1-
These two modifiers are structurally identical, but the latter has an
exclusive property whereas the former does not.
Also, this allows diagnostics to use the modifier name that appears in
the spec that corresponds to the version in -fopenmp-version.