LLVM/project fd64c07 — mlir/include/mlir/Dialect/Tosa/IR TosaUtilOps.td, mlir/lib/Dialect/Tosa CMakeLists.txt

[mlir][tosa] Remove vector unrolling support for apply_scale (#238010)

The vector unrolling support for `tosa.apply_scale` has no tests or
in-tree users, leaving its intended use unclear. This PR removes that
support ahead of the planned vector unrolling refactor, keeping the
refactor focused on demonstrated uses of the interface.

This PR removes that support ahead of the planned vector unrolling
refactor (https://github.com/llvm/llvm-project/issues/233408), keeping
the refactor focused on demonstrated uses of the interface.

This effectively reverts the following commit:
```bash
commit 81566001e0c8b072fa9d39be7dac1c007889d937
Author: Jakub Kuderski <kubak at google.com>
Date:   Mon Feb 13 16:51:37 2023 -0500

    [mlir][tosa] Enable `apply_scale` unrolling
```
DeltaFile
+1-7mlir/include/mlir/Dialect/Tosa/IR/TosaUtilOps.td
+0-7mlir/lib/Dialect/Tosa/IR/TosaOps.cpp
+0-1mlir/lib/Dialect/Tosa/CMakeLists.txt
+1-153 files

LLVM/project c5b99ea — llvm/docs AMDGPUUsage.md

[RFC][AMDGPU][Doc] Add documentation about ABI occupancy (#224103)

This PR introduces ABI occupancy in the documentation. The actual
implementation will come in follow-up PRs once we agree on the spec.
DeltaFile
+52-1llvm/docs/AMDGPUUsage.md
+52-11 files

LLVM/project 8064ba2 — clang/test/Misc codegen-printer.c

[Clang] NFC: Add x86-registered-target to codegen printer test (#238770)
DeltaFile
+1-0clang/test/Misc/codegen-printer.c
+1-01 files

LLVM/project 376a391 — llvm/lib/Target/AArch64 AArch64ISelLowering.cpp, llvm/test/CodeGen/AArch64 vector-interleave-consecutive-splats.ll vector-interleave-multiple-stores.ll

[AArch64] Combine multiple uses of a interleave (#235669)

When result of vector_interleave operation is used in multiple store
operation each can form stN.
DeltaFile
+111-0llvm/test/CodeGen/AArch64/vector-interleave-multiple-stores.ll
+7-26llvm/test/CodeGen/AArch64/vector-interleave-consecutive-splats.ll
+22-5llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
+140-313 files

LLVM/project da33a53 — llvm/lib/Target/AArch64 AArch64TargetTransformInfo.cpp AArch64SVEInstrInfo.td, llvm/test/CodeGen/AArch64 mask-beforefirst-sve.ll

[LLVM][CodeGen][SVE] Custom lower ISD::MASK_BEFOREFIRST. (#237325)

Avoid the need to create predicate during isel, which in turn allows
more predicate reuse opportunities.

AArch64TTIImpl::getIntrinsicInstrCost() has been changed to maintain the
existing costs for llvm.mask.beforefirst.
DeltaFile
+24-7llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
+6-10llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td
+10-0llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
+0-4llvm/test/CodeGen/AArch64/mask-beforefirst-sve.ll
+40-214 files

LLVM/project ac3f018 — llvm/lib/CodeGen/SelectionDAG DAGCombiner.cpp, llvm/test/CodeGen/NVPTX extract-subvector-bitcast.ll

[DAGCombiner] in `visitEXTRACT_SUBVECTOR`, don't peek through bitcasts when looking for demanded elements (#237411)

This patch fixes superlinear-time iteration when DAGCombiner computes
demanded elements of a vector accessed by multiple `extract_subvector`
nodes. Before the fix, the total time to evaluate a sequence of `E`
extracts of a vector of length `V` is `E * V`. After, it's just `E`.

This was a latent bug exposed after
https://github.com/llvm/llvm-project/pull/204351 landed, because before
this DAGCombiner would bail on the extract as it computed no demanded
elements.
DeltaFile
+64-0llvm/test/CodeGen/NVPTX/extract-subvector-bitcast.ll
+6-8llvm/test/CodeGen/X86/avx512-extract-subvector-load-store.ll
+4-0llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
+74-83 files

LLVM/project e3a2817 — llvm/test/CodeGen/Hexagon signext-inreg.ll, llvm/test/CodeGen/Hexagon/autohvx fp-to-int.ll cttz-elts-split.ll

[Hexagon] Enable SlotIndexes compaction by default

Opt Hexagon in to dropping dead SlotIndexes entries before greedy
allocation, as AMDGPU already does, so live range sizes count only
instructions that still exist.

The test updates are register allocation changes; two pipeliner tests
get back their original, shorter kernels.
DeltaFile
+551-549llvm/test/CodeGen/Hexagon/autohvx/int-to-fp.ll
+233-235llvm/test/CodeGen/Hexagon/autohvx/build-vector-float-type.ll
+154-146llvm/test/CodeGen/Hexagon/autohvx/cttz-elts-split.ll
+113-115llvm/test/CodeGen/Hexagon/autohvx/fp-to-int.ll
+95-95llvm/test/CodeGen/Hexagon/vect/vect-vshifts.ll
+70-71llvm/test/CodeGen/Hexagon/signext-inreg.ll
+1,216-1,21112 files not shown
+1,329-1,32218 files

LLVM/project f5eb672 — llvm/include/llvm/CodeGen/GlobalISel LegalizerInfo.h, llvm/unittests/CodeGen/GlobalISel LegalizerInfoTest.cpp

[GlobalISel] Compare element sizes in minScalarSameAs/maxScalarSameAs (#237753)

`minScalarSameAs()`/`maxScalarSameAs()` emit `changeElementSizeTo()`,
which
replaces the element type while keeping the element count, but their
predicates
compared an element size against the other type's *total* size. For `<4 x s32>`
that is 32 vs 128:

- `maxScalarSameAs()` matched `<4 x s32>` against itself and produced a no-op
  mutation, tripping `mutationIsSane()` in the legalizer.
- `minScalarSameAs()` required the other element size to exceed the whole
  vector, so it was effectively dead for vector types.

Compare element sizes on both sides instead. Scalars are unaffected:
element
size and total size are the same there.

Found while fixing the vector `G_CTPOP` legalizer abort in #235976;

    [7 lines not shown]
DeltaFile
+31-0llvm/unittests/CodeGen/GlobalISel/LegalizerInfoTest.cpp
+2-2llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h
+33-22 files

LLVM/project 53b32bd — clang/unittests/Support TimeProfilerTest.cpp

[clang][unittests] Check TimeProfilerTest graphs by event order (#237163)

The test rebuilt the scope tree from microsecond timestamps, so a scope
that starts and ends in the tick its predecessor ended in looks like a
child of it. Instead of rebuilding a tree, we check the expected graph
against what the trace encodes exactly. So we avoid any potential
overlaps.

EvaluateKnownConstIntCheckOverflow was made fast enough that it was
happening on some runs of ConstantEvaluationC99 test.

Turns out that ConstantEvaluationCxx20 was disabled for the same reason.

PerformPendingInstantiations was a special case for the wrong case. So
its gone.

This is fixing a flaky CI failure introduced by c467c6b. But the
flakyness was just because of the MS issue, the fix is valid. So fixing
the tests is the right way forward.
DeltaFile
+138-93clang/unittests/Support/TimeProfilerTest.cpp
+138-931 files

LLVM/project 6bbeda3 — llvm/lib/Target/WebAssembly WebAssemblyUtilities.h WebAssemblyRegColoring.cpp, llvm/test/CodeGen/WebAssembly swiftasync-first-param.ll swiftasync-local.ll

[wasm] Swift async ABI p2: Reserve local 0 for the swiftasync argument

To make it possible to always recover the async context in wasm frames,
this patch reserves local 0 so that it is never overwritten.

Previously, two places were clobbering the register:
* Register coloring gave it to other values after the last use of the
  swiftasync argument, for example the parent context in await resume
  funclets.
* Register coalescing merged the swiftasync argument with copies, for
  example when the argument is the initial value of a loop variable.
DeltaFile
+92-0llvm/test/CodeGen/WebAssembly/swiftasync-local.ll
+24-5llvm/lib/Target/WebAssembly/WebAssemblyExplicitLocals.cpp
+14-0llvm/lib/Target/WebAssembly/WebAssemblyUtilities.cpp
+9-2llvm/lib/Target/WebAssembly/WebAssemblyRegColoring.cpp
+7-0llvm/lib/Target/WebAssembly/WebAssemblyUtilities.h
+1-1llvm/test/CodeGen/WebAssembly/swiftasync-first-param.ll
+147-86 files

LLVM/project 5de0ac3 — llvm/include/llvm/ADT PointerIntPair.h, llvm/unittests/ADT PointerIntPairTest.cpp

[ADT] Avoid runtime cast on tagged pointer in PointerIntPair (#238334)

PointerIntPair::getFromOpaqueValue(const void *V) calls
PtrTraits::getFromVoidPointer(V) on the unmasked opaque pointer solely
to trigger a compile-time error when V is a const void * and PtrTraits
only accepts a non-const void *, discarding the returned pointer before
constructing the PointerIntPair from const_cast<void *>(V).

When compiled with Control Flow Integrity enabled for derived and
unrelated casts (-fsanitize=cfi-derived-cast and
-fsanitize=cfi-unrelated-cast) and PointerTy is a polymorphic class
pointer, PtrTraits::getFromVoidPointer(V) performs a runtime static_cast
from const void * to the polymorphic pointer type and executes a CFI
vtable check. If the low integer tag bits of V are non-zero, the tagged
address does not point to a valid vtable and traps at runtime.

Replace the discarded runtime call with a static_assert checking
std::is_convertible_v<decltype(PtrTraits::getFromVoidPointer(V)),
PointerTy>

    [6 lines not shown]
DeltaFile
+31-0llvm/unittests/ADT/PointerIntPairTest.cpp
+3-1llvm/include/llvm/ADT/PointerIntPair.h
+34-12 files

LLVM/project 7c648c8 — llvm/lib/Target/LoongArch LoongArchLASXInstrInfo.td LoongArchLSXInstrInfo.td, llvm/test/CodeGen/LoongArch sextw-removal.ll

[LoongArch] Materialize vector zero-test results via `MOVCF2GR` (#230804)

This generalizes the changes in the previous commit so that all
zero-test results can be consumed directly through `$FCC` when possible,
and materialized via `MOVCF2GR`, rather than branchy blocks, when really
needed. Test expectations are updated accordingly.

I created [a
microbench](https://gist.github.com/CSharperMantle/cc31f0320f15e1fc3985dafa567c5f75)
with LLM assistance, which yielded the following results on my Loongson
3B6000 12C24T (units are in cycle, N=31). On all cases, the new sequence
performs better in cycles than the current ("Old") one.

| Scenario | Old geomean | Old +/- % | Old SD | New geomean | New +/- %
| New SD | New/Old | Welch p | Mann-Whitney U p |
| :-------------------------- | ----------: | --------: | ------: |
----------: | --------: | -----: | ------: | --------: |
---------------: |
| Linear, predicted-taken | 3255107 | +/- 0.06% | 1,971 | 1000235 | +/-

    [12 lines not shown]
DeltaFile
+382-199llvm/test/CodeGen/LoongArch/sextw-removal.ll
+2-153llvm/lib/Target/LoongArch/LoongArchISelLowering.cpp
+59-49llvm/lib/Target/LoongArch/LoongArchLSXInstrInfo.td
+33-33llvm/lib/Target/LoongArch/LoongArchLASXInstrInfo.td
+33-30llvm/test/CodeGen/LoongArch/lsx/intrinsic-bz-bnz.ll
+33-24llvm/test/CodeGen/LoongArch/lsx/intrinsic-setanyeqz.ll
+542-4887 files not shown
+708-58513 files

LLVM/project 69b3a4f — libc/src/__support/OSUtil/linux/syscall_wrappers close_range.h, libc/src/unistd close_range.h

[libc] Implement close_range in unistd (#236913)

This patch implements the `close_range` entrypoint in LLVM libc under
`unistd` as standardized in POSIX.1-2024 and Linux kernel 5.9+.

- Implements internal syscall wrapper `close_range` with fallback error
handling.
- Adds public entrypoint and headers conforming to Doxygen format.
- Adds unit tests covering standard range closure and error conditions
(`EINVAL`).
- Updates entrypoints across Linux targets (`x86_64`, `aarch64`, `arm`,
`riscv`).

Fixes #236896.
DeltaFile
+97-0libc/test/src/unistd/close_range_test.cpp
+34-0libc/src/__support/OSUtil/linux/syscall_wrappers/close_range.h
+33-0libc/src/unistd/linux/close_range.cpp
+25-0libc/src/unistd/close_range.h
+19-0libc/test/src/unistd/CMakeLists.txt
+13-0libc/src/unistd/linux/CMakeLists.txt
+221-09 files not shown
+263-115 files

LLVM/project 25f4a72 — llvm/lib/Target/AArch64 AArch64SVEInstrInfo.td, llvm/test/CodeGen/AArch64 sve-intrinsics-xor-and.ll sve-intrinsics-and-xor.ll

[AArch64] Combine SVE AND and XOR to BIC for _m form

Add patterns to combine the expressions of the following type to BIC
when possible:

```
return svand_u32_m(svptrue_b32(), a, sveor_u32_x(svptrue_b32(), a, b));
```

Cover symmetric case where result of AND is used by EOR for the above
expression.

Cover cases where the inner node is of _u form like sveor_u32_u or
sveand_u32_u.

Cover cases where the inner node is of _m/_z form under matching
predicates or all-active predicates for the inner node.

Also, cover the case where the inner node is a normal LLVM AND(or XOR)

    [4 lines not shown]
DeltaFile
+116-0llvm/test/CodeGen/AArch64/sve-intrinsics-xor-and.ll
+116-0llvm/test/CodeGen/AArch64/sve-intrinsics-and-xor.ll
+82-0llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td
+314-03 files

LLVM/project ca08a75 — llvm/lib/Transforms/Vectorize VPRecipeBuilder.h VPlanTransforms.h, llvm/test/Transforms/LoopVectorize compress-idioms.ll

Fixups
DeltaFile
+97-0llvm/test/Transforms/LoopVectorize/compress-idioms.ll
+10-4llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+8-5llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+6-6llvm/lib/Transforms/Vectorize/VPlanTransforms.h
+1-1llvm/test/Transforms/LoopVectorize/VPlan/vplan-print-before-after-all.ll
+1-1llvm/lib/Transforms/Vectorize/VPRecipeBuilder.h
+123-176 files

LLVM/project f7850f9 — clang/docs BoundsSafety.md, clang/docs/BoundsSafety BoundsSafety.md

Merge branch 'main' into users/huntergr-arm/vector-lsr-data
DeltaFile
+3,186-0llvm/test/CodeGen/AMDGPU/amdgcn-av-scopes.ll
+1,140-10llvm/test/CodeGen/AMDGPU/promote-constOffset-to-imm.ll
+944-96llvm/test/CodeGen/AMDGPU/llvm.amdgcn.av.load.b128.ll
+5-967clang/docs/BoundsSafety.md
+969-0clang/docs/BoundsSafety/BoundsSafety.md
+437-508llvm/test/CodeGen/AArch64/fixed_masked_deinterleaved_loads.ll
+6,681-1,5811,869 files not shown
+45,842-16,6021,875 files

LLVM/project b93e060 — llvm/include/llvm/CodeGen SelectionDAG.h, llvm/lib/CodeGen/SelectionDAG DAGCombiner.cpp SelectionDAG.cpp

[SelectionDAG] Address concat fold style feedback
DeltaFile
+12-11llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
+1-1llvm/test/CodeGen/AMDGPU/concat-scalar-to-vector.ll
+1-1llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
+1-1llvm/include/llvm/CodeGen/SelectionDAG.h
+15-144 files

LLVM/project 954cf5d — llvm/lib/Target/ARM/MCTargetDesc ARMInstPrinter.cpp, llvm/test/CodeGen/ARM inlineasm-switch-mode.ll

[ARM] Fix A32 single-register PUSH/POP preferred disassembly aliases

For A32, `POP` of a single register encodes as an LDR. When the code
for this was first committed in 2011 in change 8ba76c6d5, the Arm ARM
only mentioned that `POP` is listed as the "standard syntax".

Later, in 2014, the Arm ARM DDI0487A.e, §F7.1.137 was updated to
specifically say that `POP` "is always the preferred disassembly."

Update the code and tests to reflect the Arm ARM.
DeltaFile
+3-2llvm/lib/Target/ARM/MCTargetDesc/ARMInstPrinter.cpp
+2-2llvm/test/MC/Disassembler/ARM/basic-arm-instructions.txt
+1-1llvm/test/CodeGen/ARM/inlineasm-switch-mode.ll
+6-53 files

LLVM/project 59ac9a2 — clang/lib/StaticAnalyzer/Checkers/MPI-Checker MPIChecker.cpp

[analyzer] Improve node creation hygiene in MPIChecker (#238423)

Properly handle the case when node creation fails, remove a pointless
transition and some pointless state lookups.

Fixes #64647
DeltaFile
+8-8clang/lib/StaticAnalyzer/Checkers/MPI-Checker/MPIChecker.cpp
+8-81 files

LLVM/project 00758de — clang/lib/StaticAnalyzer/Core SimpleSValBuilder.cpp, clang/test/Analysis svalbuilder-rearrange-comparisons.cpp

[analyzer] tryRearrange: don't "cancel out" symbol in BO_Add (#237160)

In the special case when the same symbol appeared on both sides of the
top-level operator (perhaps with some integer offsets), it was cancelled
out... EVEN WHEN THE OPERATOR WAS ADDITION!

E.g. it was rearranging `(x + 1) + (x + 2)` to `3` and `x + x` to zero.

This change skips the "cancel out symbol" step for `BO_Add`, which
ensures that e.g. `(x + 1) + (x + 2)` is rearranged to `(x + x) + 3`.
Cancelling symbols is valid for all other supported operators
(subtraction and comparisons).

This bug was introduced in 2018 by
2bbccca9f75b6bce08d77cf19abfb206d0c3bc2e, but after spending 3 months in
trunk, `tryRearrange` was disabled by default for severe unrelated
(performance) issues. After that
`aggressive-binary-operation-simplification` was just one of the many
basically unsupported analyzer options, so it's not a surprise that

    [5 lines not shown]
DeltaFile
+9-0clang/test/Analysis/svalbuilder-rearrange-comparisons.cpp
+1-1clang/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp
+10-12 files

LLVM/project 4eb97a8 — llvm/lib/Target/AArch64 AArch64InstrInfo.cpp AArch64BranchTargets.cpp, llvm/test/CodeGen/AArch64 sign-return-address-pauth-lr.ll misched-branch-targets.mir

[AArch64] Skip adding BTI before PACI[AB]SPPC in AArch64BranchTargets (#236164)

PACI[AB]SPPC also has an implicit BTI instruction, so should be skipped
in addBTI similar to PACI[AB]SP.

AArch64BranchTargetsImpl is also extended to replace the signing
instruction with PACNBI[AB]SPPC, to prevent a bti instruction moving
to the middle of the prologue.
DeltaFile
+127-0llvm/test/CodeGen/AArch64/pauth-lr-non-branch-target.ll
+52-11llvm/lib/Target/AArch64/AArch64BranchTargets.cpp
+32-0llvm/test/CodeGen/AArch64/misched-branch-targets.mir
+0-6llvm/test/CodeGen/AArch64/sign-return-address-pauth-lr.ll
+2-0llvm/lib/Target/AArch64/AArch64InstrInfo.cpp
+213-175 files

LLVM/project 0b79f71 — clang/docs ReleaseNotes.md, clang/lib/Sema SemaOpenMP.cpp

[clang][OpenMP] Fix crash on `linear(uval)` with a reference parameter (#237754)

Fixes #108166

`linear(uval(x))` crashed when `x` is a reference parameter. For `uval`,
Sema read the initial value from the reference's initializer instead of
the reference, and a parameter has none, so a null `Expr` reached
`DefaultLvalueConversion`. Even with an initializer this was wrong: a
defaulted `int &x = g` made the loop update `g`, and in a `parallel`
region or a lambda it could name an uncaptured variable.

Drop the shortcut in `ActOnOpenMPLinearClause` and
`FinishOpenMPLinearClause`, so a `uval` item is read from and written
back through the reference, like `val`. That is what the spec says for
loop constructs, where `uval` only adds the requirement that the item be
a reference, which is still checked.

AI Assisted!
DeltaFile
+70-0clang/test/OpenMP/simd_linear_uval_codegen.cpp
+63-0clang/test/OpenMP/simd_linear_messages.cpp
+6-9clang/lib/Sema/SemaOpenMP.cpp
+8-2clang/test/OpenMP/simd_codegen.cpp
+1-2clang/test/OpenMP/for_linear_codegen.cpp
+2-0clang/docs/ReleaseNotes.md
+150-136 files

LLVM/project 03e2f03 — clang/test/utils/update_cc_test_checks lit-if.test, clang/test/utils/update_cc_test_checks/Inputs lit-if.c lit-if.c.expected

[UpdateTestChecks] Handle lit's %if in update_cc_test_checks.py (#238255)

Handle run lines containing lit `%if`s by ignoring the condition and
unwrapping, similar to other update scripts.
DeltaFile
+8-2llvm/utils/UpdateTestChecks/common.py
+9-0clang/test/utils/update_cc_test_checks/Inputs/lit-if.c.expected
+4-0clang/test/utils/update_cc_test_checks/Inputs/lit-if.c
+4-0clang/test/utils/update_cc_test_checks/lit-if.test
+1-1llvm/utils/update_cc_test_checks.py
+26-35 files

LLVM/project 5b63e40 — llvm/lib/Target/AMDGPU SIISelLowering.cpp, llvm/test/CodeGen/AMDGPU amdgpu-mul24-knownbits-intrinsics.ll

[AMDGPU] Infer mul24 known bits with unknown operands

Do not stop GlobalISel known-bits analysis when a mul24 operand has no known bits. Truncating to 24 bits and extending to the result width can still establish useful product bounds through the shared helper added by #236738.

Cover both operand orders, ignored high bits, zero and overflow boundaries, and i64 results without limiting known bits to the i32 operand width.
DeltaFile
+250-0llvm/test/CodeGen/AMDGPU/amdgpu-mul24-knownbits-intrinsics.ll
+0-4llvm/lib/Target/AMDGPU/SIISelLowering.cpp
+250-42 files

LLVM/project 6751b4f — lldb/tools/lldb-dap JSONUtils.cpp

[lldb-dap] Don't collect module statistics for the statistics event (#236413)

Use the stats options to build GetStatistics to avoid computing data
that lldb-dap drops.
DeltaFile
+8-7lldb/tools/lldb-dap/JSONUtils.cpp
+8-71 files

LLVM/project d3336d9 — llvm/test/CodeGen/AMDGPU/GlobalISel shl-ext-reduce.ll, llvm/test/Transforms/InstCombine mul-knownbits-negative.ll

[KnownBits] Cover negative multiplication boundaries

Exercise both operand orders and i8, i32, i65 and i128 results. Preserve cases where zero or signed and unsigned wraparound prevent leading-bit inference.
DeltaFile
+278-0llvm/test/Transforms/InstCombine/mul-knownbits-negative.ll
+10-9llvm/test/CodeGen/AMDGPU/GlobalISel/shl-ext-reduce.ll
+288-92 files

LLVM/project c2c903c — clang/include/clang/AST StmtOpenMP.h, clang/lib/AST StmtOpenMP.cpp

[OpenMP] Build the metadirective AST node for runtime selection. (#236432)

Follow-up to #192455 (Phase 3 of the agreed plan): with
`-fopenmp-metadirective-runtime-selection`, Sema now builds an
`OMPMetaDirective` holding every variant instead of returning the first
one.

**Known limitation**: the node has no associated statement, so
`-Wuninitialized` and `-Wunreachable-code` skip the variant bodies. This
is covered by `metadirective_runtime_flow_warnings.cpp` and will be
fixed in a follow-up.
DeltaFile
+67-14clang/include/clang/AST/StmtOpenMP.h
+51-6clang/lib/Sema/TreeTransform.h
+52-0clang/test/OpenMP/metadirective_runtime_ast_print.cpp
+45-0clang/test/OpenMP/metadirective_runtime_ast_dump.cpp
+30-12clang/lib/AST/StmtOpenMP.cpp
+42-0clang/test/OpenMP/metadirective_runtime_flow_warnings.cpp
+287-3213 files not shown
+443-5119 files

LLVM/project 0d06117 — llvm/lib/Support KnownBits.cpp, llvm/test/CodeGen/AArch64 mul.ll

[KnownBits] Improve multiplication bounds for negative operands

Bound products using operand magnitudes when both operands are negative or one is negative and the other is strictly positive. Retain unsigned overflow checks before inferring leading zeros or ones.

Cover both cases with AArch64 IR tests and update the affected AMDGPU SelectionDAG shift checks.
DeltaFile
+27-0llvm/test/CodeGen/AArch64/mul.ll
+20-2llvm/lib/Support/KnownBits.cpp
+5-4llvm/test/CodeGen/AMDGPU/lshl64-to-32.ll
+52-63 files

LLVM/project df8e0c8 — offload/include DiagnosticPrinter.h, offload/liboffload/API Diagnostic.td

[Offload][Omp] Split plugin diagnostics into detection & messaging

The plugin interface tracks a allocations and kernels (when TrackAllocationTraces
and TrackNumKernelLaunches are enabled) to emit diagnostic messages.

These messages currently contain OpenMP specific data that needs to be carried
through the Plugin Interface.

This PR splits this support in two pieces: tracking and detection that is
kept inside the plugins, and reporting of the error which is done through
a handler set from libomptarget.

A new diagnostic handler type is added, and the API to associate it to a device
are added to liboffload.

This will allow to handle the OpenMP specific data fromb the libomptarget handler
and remove it from the Plugin Interface (not done in this PR).
DeltaFile
+245-292offload/plugins-nextgen/common/include/ErrorReporting.h
+341-0offload/libompaccsupport/DiagnosticPrinter.cpp
+127-0offload/liboffload/API/Diagnostic.td
+64-0offload/plugins-nextgen/common/src/ErrorReporting.cpp
+28-11offload/plugins-nextgen/common/src/PluginInterface.cpp
+23-0offload/include/DiagnosticPrinter.h
+828-30310 files not shown
+880-30616 files

LLVM/project 6a1c035 — offload/include device.h, offload/liboffload/src OffloadImpl.cpp

[Offload][Omp] Allocate and free device memory through liboffload

Remove access to the PluginContext from libomptarget by providing two helpers
to allocate and free memory.
DeltaFile
+12-26offload/libompaccsupport/device.cpp
+24-5offload/liboffload/src/OffloadImpl.cpp
+0-3offload/include/device.h
+36-343 files