LLVM/project 3ff9208 — clang/lib/CIR/CodeGen CIRGenBuilder.h CIRGenExpr.cpp, clang/test/CIR/CodeGen subscript-addrspace-cast.cpp

[CIR] Preserve address spaces in emitPointerWithAlignment casts (#228652)

emitPointerWithAlignment handled CK_AddressSpaceConversion like
CK_BitCast and never emitted the address-space cast, so the result kept
the source address space. When the address escaped (returned reference,
stored pointer), the store path bitcast the destination slot to the
wrong address space. This miscompiled sycl::multi_ptr::operator[] on
SPIR-V: a local-memory offset was used as a generic address. Emit the
cast after the element bitcast, as classic CodeGen does.

createElementBitCast also built the new pointer type in the default
address space, so changing the element type of a non-default-AS pointer
produced an AS-changing bitcast that the verifier rejects (for example
((int *)p)[i] or __builtin_stdc_memreverse8 on an AS3 pointer). Keep the
source address space, which matches classic's withElementType.

Co-authored-by: Claude Opus 5.5 (1M context) <noreply at anthropic.com>
DeltaFile
+69-0clang/test/CIR/CodeGen/subscript-addrspace-cast.cpp
+18-0clang/test/CIR/CodeGenBuiltins/builtin-stdc-bit-c2y.c
+3-1clang/lib/CIR/CodeGen/CIRGenExpr.cpp
+2-1clang/lib/CIR/CodeGen/CIRGenBuilder.h
+92-24 files

LLVM/project de2e0aa — clang/docs ReleaseNotes.md, clang/lib/Sema SemaDeclAttr.cpp

[Clang][Smea] Accept weak reference after declaration

GCC accepts a weak reference even after there is a declaration. It is
fine for us to just append a weak attribute in the previous
declaration directly.
DeltaFile
+37-0clang/test/CodeGen/pragma-weak.c
+25-0clang/lib/Sema/SemaDeclAttr.cpp
+17-0clang/test/Sema/pragma-weak.c
+3-0clang/docs/ReleaseNotes.md
+82-04 files

LLVM/project 47d237b — mlir/include/mlir/Dialect/XeGPU/Utils XeGPUUtils.h, mlir/lib/Dialect/XeGPU/Transforms XeGPUPropagateLayout.cpp XeGPUSgToLaneDistribute.cpp

[mlir][XeGPU] Add an SLM round-trip fallback for sg-to-lane convert_layout (#227884)

This PR adds a general fallback lowering for xegpu.convert_layout in the
sg-to-lane distribution pass, which round-trips the value through shared
local memory.

The existing lane-level lowerings are all special cases: the layouts
fold into each other, or they differ in a way a xegpu.lane_shuffle or a
gpu.shuffle can express. Anything else failed to legalize and stopped
the pipeline — for instance a conversion that only moves the lane_data
of a dimension distributed over part of the subgroup:

```mlir
xegpu.convert_layout %src
  <{input_layout  = #xegpu.layout<lane_layout = [1, 2, 8], lane_data = [1, 1, 4]>,
    target_layout = #xegpu.layout<lane_layout = [1, 2, 8], lane_data = [1, 1, 1]>}>
  : vector<1x2x32xbf16>
```


    [17 lines not shown]
DeltaFile
+202-0mlir/lib/Dialect/XeGPU/Transforms/XeGPUSgToLaneDistribute.cpp
+51-0mlir/test/Dialect/XeGPU/sg-to-lane-distribute-unit.mlir
+18-0mlir/lib/Dialect/XeGPU/Utils/XeGPUUtils.cpp
+4-12mlir/lib/Dialect/XeGPU/Transforms/XeGPUPropagateLayout.cpp
+7-0mlir/include/mlir/Dialect/XeGPU/Utils/XeGPUUtils.h
+282-125 files

LLVM/project b5ab963 — mlir/include/mlir/Dialect/XeGPU/Transforms XeGPULayoutImpl.h, mlir/lib/Dialect/XeGPU/Transforms XeGPUPropagateLayout.cpp XeGPULayoutImpl.cpp

[mlir][xegpu] Fill split-group inner dims on shape_cast result layout (#227560)

This PR set the result layout for shape_cast when it can't infer the
layout from incoming consumer layout. For example,
```mlir
vector.shape_cast %0 : vector<16x1024xbf16> to vector<16x32x32xbf16>
// consumer layout: inst_data = [1, 2, 8], lane_layout = [1, 2, 8], lane_data = [1, 1, 1]
```
Taking the consumer layout as is doesn't work for layout propagation.
The lanes cover 2 along dim 1 and only 8 of dim 2's 32 — a 2x8 box.
Collapsing dims 1 and 2 gives inst_data = [1, 16] on the 16x1024 source,
which is 16 contiguous elements. Those are not the same elements: the
2x8 box is two runs of 8, 32 apart.

This PR fixes the issue by stretching the lane_data to cover the
innermost dims of source shape, to set up result layout so that each
lane gets the same data before and after the shapecast, which is the
condition that shapecast op can be successfully distributed.
```

    [10 lines not shown]
DeltaFile
+95-0mlir/lib/Dialect/XeGPU/Transforms/XeGPULayoutImpl.cpp
+64-0mlir/test/Dialect/XeGPU/propagate-layout-inst-data-invalid.mlir
+40-0mlir/include/mlir/Dialect/XeGPU/Transforms/XeGPULayoutImpl.h
+36-0mlir/test/Dialect/XeGPU/propagate-layout-inst-data.mlir
+17-2mlir/lib/Dialect/XeGPU/Transforms/XeGPUPropagateLayout.cpp
+252-25 files

LLVM/project 1372974 — compiler-rt/lib/tsan/rtl tsan_rtl_mutex.cpp

[NFC][TSan] Move RestoreStack before ScopedReport in ReportDestroyLocked (#228643)

Run RestoreStack in its own lock scope before constructing ScopedReport
in ReportDestroyLocked (matching ReportRace). This avoids acquiring
ScopedErrorReportLock or symbolizing the current stack if RestoreStack
fails, and avoids holding slot_lock and slot_mtx while populating the
ScopedReport.

Assisted-by: Gemini
DeltaFile
+17-14compiler-rt/lib/tsan/rtl/tsan_rtl_mutex.cpp
+17-141 files

NextBSD/src c71bf4a — tests iso-boot-test.sh img-boot-test.sh

Re-pin the boot tests to the shared harness v0.2.3 (banner-then-prompt login)
DeltaFile
+1-1tests/iso-boot-test.sh
+1-1tests/img-boot-test.sh
+2-22 files

NextBSD/src 3d072b9 — .github/workflows build.yml, tests loader.exp.inc qemu-arch.sh

T4: boot gates run on the shared nextbsd-ci harness @v0.2.1 (login-only)

img-boot-test.sh + iso-boot-test.sh become thin entry points onto the shared
harness (NB_LOGIN_ONLY; the live ISO adds NB_MEDIA=cd): they extract the
zipped artifact, check out nextbsd/nextbsd-ci at v0.2.1 (pinned tag = no drift),
and run harness/boot-test.sh. The loader un-mute dance, the arch-aware qemu
argv, login detection and teardown now come from the shared harness (one place,
every arch, kept green by its selftest) instead of the in-repo copies.

Delete the 1512-line tests/boot-test.sh monolith (nothing in CI invoked it) and
the in-repo tests/loader.exp.inc + tests/qemu-arch.sh (superseded by the
harness's contract.exp.inc + qemu-arch.sh). The jobs' serial-log dumps point at
the harness transcript. Both gates stay NON-GATING as before (not in release's
needs); the gate is the harness exit class.
DeltaFile
+0-1,512tests/boot-test.sh
+20-198tests/img-boot-test.sh
+18-188tests/iso-boot-test.sh
+0-119tests/qemu-arch.sh
+0-92tests/loader.exp.inc
+8-8.github/workflows/build.yml
+46-2,1171 files not shown
+47-2,1187 files

NextBSD/src d2d43e3 — tests iso-boot-test.sh img-boot-test.sh

Bump the shared-harness pin to v0.2.2 in the thin img/iso boot wrappers

v0.2.2 = v0.2.1 (v0.2.0 + login-only) plus a capped post-banner login-wait
window (180s) that probes for a shell quickly instead of waiting out the whole
global budget on an autologin image (the arm64 30-min 'hang').
DeltaFile
+1-1tests/iso-boot-test.sh
+1-1tests/img-boot-test.sh
+2-22 files

LLVM/project e835954 — llvm/lib/CodeGen CodeGenOptions.cpp CodeGenOptions.h, utils/bazel/llvm-project-overlay/llvm BUILD.bazel

[CodeGen] Declare command line options in TableGen

Move the cl::opts of TargetPassConfig.cpp and CodeGenPrepare.cpp into
CodeGenOptions.td, private to lib/CodeGen; other files will follow.
-enable-machine-outliner (cl::ValueOptional) and -regalloc
(RegisterPassParser) stay cl::opt.

CodeGenPrepare and its addressing-mode helpers hold
`const CodeGenOptions &Opts`; TargetPassConfig functions read
CodeGenOptions::Global. getCGPassBuilderOption() converts
std::optional<bool> members to the cl::boolOrDefault fields of the
public CGPassBuilderOption. -basic-block-section-match-infer, which was
not cl::Hidden, is now listed by -help-hidden only.

Aided by Opus 5.5
DeltaFile
+142-318llvm/lib/CodeGen/TargetPassConfig.cpp
+96-221llvm/lib/CodeGen/CodeGenPrepare.cpp
+200-0llvm/lib/CodeGen/CodeGenOptions.td
+19-0llvm/lib/CodeGen/CodeGenOptions.h
+15-0llvm/lib/CodeGen/CodeGenOptions.cpp
+11-0utils/bazel/llvm-project-overlay/llvm/BUILD.bazel
+483-5393 files not shown
+503-5449 files

LLVM/project 922e22c — llvm/lib/CodeGen RegAllocFast.cpp

[CodeGen] Remove unused -rafast-ignore-missing-defs (#228808)

Unused since the 2020 RegAllocFast rewrite (c8757ff3aa7d) introduced it.
DeltaFile
+1-5llvm/lib/CodeGen/RegAllocFast.cpp
+1-51 files

LLVM/project 552d320 — llvm/lib/Target/X86 X86InstrAVX512.td X86ISelLowering.cpp

[X86] Correct the SDTypeProfile for VNNI instructions. (#228745)

Operand 1 and 2 have i8 or i16 elements while the result and operand 0
have i32 elements. The type profile previously said all operands were
the same type.

I've split the type profile to capture the i8 and i16 element size
accurately.

Assisted-by: Claude
DeltaFile
+53-53llvm/lib/Target/X86/X86InstrSSE.td
+27-21llvm/lib/Target/X86/X86InstrFragmentsSIMD.td
+9-8llvm/lib/Target/X86/X86ISelLowering.cpp
+4-3llvm/lib/Target/X86/X86InstrAVX512.td
+93-854 files

LLVM/project ed17053 — mlir/lib/Conversion/NVGPUToNVVM NVGPUToNVVM.cpp, mlir/lib/Dialect/NVGPU/IR NVGPUDialect.cpp

[mlir][nvgpu] Align integer WGMMA type checks with i8 operands (#212215)

Integer WGMMA uses i8 operands with an i32 accumulator, but the NVGPU
verifier and K-shape selection still checked for i16.

Changes both checks to i8 and adds tests for rejected i16 inputs and the
existing i8 "not supported yet" limitation.
DeltaFile
+22-0mlir/test/Dialect/NVGPU/invalid.mlir
+1-1mlir/lib/Dialect/NVGPU/IR/NVGPUDialect.cpp
+1-1mlir/lib/Conversion/NVGPUToNVVM/NVGPUToNVVM.cpp
+24-23 files

LLVM/project 5729303 — compiler-rt/lib/tsan/rtl tsan_interface_ann.cpp tsan_rtl_mutex.cpp

[NFC][TSan] Move ObtainCurrentStack out of ThreadRegistryLock scope

ObtainCurrentStack only reads the current thread's shadow stack and
allocates a VarSizeStackTrace buffer, which does not require
ThreadRegistryLock (and already runs outside ThreadRegistryLock in
ReportRace, SignalUnsafeCall, and ReportErrnoSpoiling).

Move ObtainCurrentStack (and dummy_pc in ReportDeadlock) before
ScopedReport in ReportMutexHeldWrongContext, ReportMutexMisuse,
ReportDeadlock, and ReportDestroyLocked so the stack trace buffers also
outlive ScopedReport and OutputReport.

Assisted-by: Gemini

Pull Request: https://github.com/llvm/llvm-project/pull/228794
DeltaFile
+6-5compiler-rt/lib/tsan/rtl/tsan_rtl_mutex.cpp
+2-2compiler-rt/lib/tsan/rtl/tsan_interface_ann.cpp
+8-72 files

LLVM/project b4525ca — compiler-rt/lib/tsan/rtl tsan_rtl_mutex.cpp

[NFC][TSan] Move RestoreStack before ScopedReport in ReportDestroyLocked

Run RestoreStack in its own lock scope before constructing ScopedReport
in ReportDestroyLocked (matching ReportRace). This avoids acquiring
ScopedErrorReportLock or symbolizing the current stack if RestoreStack
fails, and avoids holding slot_lock and slot_mtx while populating the
ScopedReport.

Assisted-by: Gemini

Pull Request: https://github.com/llvm/llvm-project/pull/228643
DeltaFile
+17-14compiler-rt/lib/tsan/rtl/tsan_rtl_mutex.cpp
+17-141 files

LLVM/project d8f3268 — compiler-rt/lib/tsan/rtl tsan_report.h tsan_rtl_report.cpp

[TSan] Defer symbolization in AddStack and AddSleep to SymbolizeStackElems

PR #151495 delayed symbolization for memory accesses, locations,
threads, and mutexes until OutputReport (after ThreadRegistryLock is
released), but missed ScopedReport::AddStack and ScopedReport::AddSleep.
As a result, ReportRace (via AddSleep) and ReportMutexMisuse,
ReportDeadlock, and ReportDestroyLocked (via AddStack) still invoked the
symbolizer while holding ThreadRegistryLock.

Store the unsymbolized stack traces and sleep stack ID in ReportDesc and
symbolize them in ScopedReport::SymbolizeStackElems().

Assisted-by: Gemini

Pull Request: https://github.com/llvm/llvm-project/pull/228795
DeltaFile
+15-4compiler-rt/lib/tsan/rtl/tsan_rtl_report.cpp
+7-0compiler-rt/lib/tsan/rtl/tsan_report.h
+22-42 files

LLVM/project cc6d1dc — compiler-rt/lib/tsan/rtl tsan_mman.cpp tsan_rtl_thread.cpp

[NFC][TSan] Allocate ScopedReport as a stack variable

Now that ScopedReport is constructed before acquiring ThreadRegistryLock
or slot locks across all reporting functions, it no longer needs to be
constructed inside the lock scope via placement new on __builtin_alloca
storage.

Declare ScopedReport as a normal stack variable before the lock scope
and remove the manual destructor calls.

Assisted-by: Gemini

Pull Request: https://github.com/llvm/llvm-project/pull/228637
DeltaFile
+17-33compiler-rt/lib/tsan/rtl/tsan_rtl_mutex.cpp
+8-13compiler-rt/lib/tsan/rtl/tsan_rtl_report.cpp
+4-9compiler-rt/lib/tsan/rtl/tsan_rtl_thread.cpp
+4-9compiler-rt/lib/tsan/rtl/tsan_interface_ann.cpp
+4-9compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp
+3-8compiler-rt/lib/tsan/rtl/tsan_mman.cpp
+40-816 files

LLVM/project 7ccb220 — compiler-rt/lib/tsan/rtl tsan_interface_ann.cpp tsan_rtl_mutex.cpp

[NFC][TSan] Move ObtainCurrentStack out of ThreadRegistryLock scope

ObtainCurrentStack only reads the current thread's shadow stack and
allocates a VarSizeStackTrace buffer, which does not require
ThreadRegistryLock (and already runs outside ThreadRegistryLock in
ReportRace, SignalUnsafeCall, and ReportErrnoSpoiling).

Move ObtainCurrentStack (and dummy_pc in ReportDeadlock) before
ScopedReport in ReportMutexHeldWrongContext, ReportMutexMisuse,
ReportDeadlock, and ReportDestroyLocked so the stack trace buffers also
outlive ScopedReport and OutputReport.

Assisted-by: Gemini

Pull Request: https://github.com/llvm/llvm-project/pull/228794
DeltaFile
+6-5compiler-rt/lib/tsan/rtl/tsan_rtl_mutex.cpp
+2-2compiler-rt/lib/tsan/rtl/tsan_interface_ann.cpp
+8-72 files

LLVM/project 120e630 — compiler-rt/lib/fuzzer FuzzerTracePC.cpp

[libFuzzer] Remove unused helper `GetPreviousInstructionPc` (#228453)

This function hasn't been used since 2891b257c24c ("[libFuzzer] remove
stale code"), and it contains a typo in the RISCV #ifdef arm. Removing
this altogether.

This was found when surveying RISCV-specific code in [a downstream
project](https://searchfox.org/firefox-main/rev/084057e952e7dbf376f6c3765ad242aec3785dc6/tools/fuzzing/libfuzzer/FuzzerTracePC.cpp#141)
that vendored libFuzzer.
DeltaFile
+0-19compiler-rt/lib/fuzzer/FuzzerTracePC.cpp
+0-191 files

LLVM/project 6fae12c — compiler-rt/lib/tsan/rtl tsan_rtl_thread.cpp tsan_mman.cpp

[TSan] Lock ScopedErrorReportLock before slot and thread_registry locks

OutputReport runs while ScopedErrorReportLock is held after slot_mtx and
thread_registry have been unlocked. Because code executed during
OutputReport (symbolizer, callbacks, or signal handlers) can acquire
slot_mtx or thread_registry, ScopedErrorReportLock must precede slot and
thread_registry locks in the lock hierarchy to avoid AB-BA deadlocks
between concurrent reports or fork().

- Move ScopedErrorReportLock::Lock() before slot.mtx, thread_registry,
  and slot_mtx in ForkBefore (and unlock in reverse order in ForkAfter).
- Replace ctx->thread_registry.CheckLocked() in ScopedReportBase's
  constructor with CheckedMutex::CheckNoLocks(), and add CheckLocked() to
  AddThread(const ThreadContext *) and CheckNoLocks() to OutputReport.
- Construct ScopedReport before acquiring ThreadRegistryLock across all
  reporting functions, and close the RestoreStack lock scope before
  constructing ScopedReport in ReportRace.

Assisted-by: Gemini

    [2 lines not shown]
DeltaFile
+22-17compiler-rt/lib/tsan/rtl/tsan_rtl_report.cpp
+3-3compiler-rt/lib/tsan/rtl/tsan_rtl_mutex.cpp
+2-2compiler-rt/lib/tsan/rtl/tsan_rtl.cpp
+1-1compiler-rt/lib/tsan/rtl/tsan_rtl_thread.cpp
+1-1compiler-rt/lib/tsan/rtl/tsan_mman.cpp
+1-1compiler-rt/lib/tsan/rtl/tsan_interface_ann.cpp
+30-251 files not shown
+31-267 files

LLVM/project f19701f — compiler-rt/lib/tsan/rtl tsan_rtl_mutex.cpp

[NFC][TSan] Move RestoreStack before ScopedReport in ReportDestroyLocked

Run RestoreStack in its own lock scope before constructing ScopedReport
in ReportDestroyLocked (matching ReportRace). This avoids acquiring
ScopedErrorReportLock or symbolizing the current stack if RestoreStack
fails, and avoids holding slot_lock and slot_mtx while populating the
ScopedReport.

Assisted-by: Gemini

Pull Request: https://github.com/llvm/llvm-project/pull/228643
DeltaFile
+17-14compiler-rt/lib/tsan/rtl/tsan_rtl_mutex.cpp
+17-141 files

LLVM/project 9cd841a — compiler-rt/lib/tsan/rtl tsan_report.cpp tsan_report.h

[NFC][TSan] Use in-class member initializers in tsan_report.h

Use in-class member initializers for all structs and classes in
tsan_report.h and default constructors and destructor in
tsan_report.cpp.

Assisted-by: Gemini

Pull Request: https://github.com/llvm/llvm-project/pull/228780
DeltaFile
+29-28compiler-rt/lib/tsan/rtl/tsan_report.h
+5-17compiler-rt/lib/tsan/rtl/tsan_report.cpp
+34-452 files

LLVM/project 4bbc53c — orc-rt/test/unit CommonTestUtils.h

[orc-rt] Make noErrors report errors as test failures (#228807)

noErrors used cantFail, so an unexpected error aborted the whole test
binary without naming the test that hit it, and with assertions disabled
was dropped silently. Use EXPECT_THAT_ERROR instead, so the error is
reported as a failure of the current test and the remaining tests still
run.
DeltaFile
+8-4orc-rt/test/unit/CommonTestUtils.h
+8-41 files

FreeBSD/src 2050abe — sys/rpc rpc_generic.c

rpc_generic.c: Initialize "cp" to shut the compiler up

This patch does not fix any semantics issue.

MFC after:      3 months
Fixes:  884ee8d6c9b4 ("nfscl: Add some glue for client side NFS over RDMA")
DeltaFile
+1-1sys/rpc/rpc_generic.c
+1-11 files

LLVM/project e94b748 — compiler-rt/lib/tsan/rtl tsan_rtl.h tsan_rtl_report.cpp

[NFC][TSan] Merge ScopedReportBase into ScopedReport (#228640)

ScopedReport is the only subclass of ScopedReportBase and nothing uses
ScopedReportBase directly. Merge ScopedReportBase into ScopedReport.

Assisted-by: Gemini
DeltaFile
+16-21compiler-rt/lib/tsan/rtl/tsan_rtl_report.cpp
+7-16compiler-rt/lib/tsan/rtl/tsan_rtl.h
+23-372 files

LLVM/project f3a1a8c — llvm/lib/Transforms/Vectorize SLPVectorizer.cpp, llvm/test/Transforms/SLPVectorizer/X86 reduction-erased-copyable-cast-main-op.ll

[SLP]Fix crash on deleted main op of copyable state in reductions

Vectorizing one group of reduced values can erase the main operation of
a later group's copyable state, leaving it with dropped operands.

Fixes #228768

Reviewers: 

Pull Request: https://github.com/llvm/llvm-project/pull/228806
DeltaFile
+56-0llvm/test/Transforms/SLPVectorizer/X86/reduction-erased-copyable-cast-main-op.ll
+5-0llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+61-02 files

LLVM/project 0579ef5 — orc-rt/test/unit/support/sps SPSWrapperFunctionTest.cpp

[orc-rt] Use the Error matchers in SPSWrapperFunctionTest (#228804)

Use the Error matchers introduced in 4c8a437d0487 to clean up error
tests in SPSWrapperFunctionTest.
DeltaFile
+45-16orc-rt/test/unit/support/sps/SPSWrapperFunctionTest.cpp
+45-161 files

GhostBSD/ports 8fa09b0 — sysutils/py-bectl Makefile distinfo

sysutils/py-bectl: update to 0.7
DeltaFile
+3-3sysutils/py-bectl/distinfo
+1-1sysutils/py-bectl/Makefile
+4-42 files

GhostBSD/install-station 1780cdf — install_station network_setup.py

Re-enable Rescan when a WiFi scan fails

A failure in networkdictionary() inside the rescan thread, or the
WiFi card vanishing from the new scan, left the Rescan button greyed
out for good. Restore it in a finally block and skip the access point
list update when the card is gone.
DeltaFile
+7-4install_station/network_setup.py
+7-41 files

LLVM/project ee2abab — compiler-rt/lib/tsan/rtl tsan_interface_ann.cpp tsan_rtl_mutex.cpp

[NFC][TSan] Move ObtainCurrentStack out of ThreadRegistryLock scope

ObtainCurrentStack only reads the current thread's shadow stack and
allocates a VarSizeStackTrace buffer, which does not require
ThreadRegistryLock (and already runs outside ThreadRegistryLock in
ReportRace, SignalUnsafeCall, ReportErrnoSpoiling, and
ReportDestroyLocked).

Move ObtainCurrentStack (and dummy_pc in ReportDeadlock) before
ScopedReport in ReportMutexHeldWrongContext, ReportMutexMisuse, and
ReportDeadlock so the stack trace buffers also outlive ScopedReport and
OutputReport.

Assisted-by: Gemini

Pull Request: https://github.com/llvm/llvm-project/pull/228794
DeltaFile
+3-3compiler-rt/lib/tsan/rtl/tsan_rtl_mutex.cpp
+2-2compiler-rt/lib/tsan/rtl/tsan_interface_ann.cpp
+5-52 files

LLVM/project ca508d9 — compiler-rt/lib/tsan/rtl tsan_rtl_mutex.cpp

[NFC][TSan] Move RestoreStack before ScopedReport in ReportDestroyLocked

Run RestoreStack in its own lock scope before constructing ScopedReport
in ReportDestroyLocked (matching ReportRace). This avoids acquiring
ScopedErrorReportLock or symbolizing the current stack if RestoreStack
fails, and avoids holding slot_lock and slot_mtx while populating the
ScopedReport.

Assisted-by: Gemini

Pull Request: https://github.com/llvm/llvm-project/pull/228643
DeltaFile
+17-13compiler-rt/lib/tsan/rtl/tsan_rtl_mutex.cpp
+17-131 files