LLVM/project 7e667c3lldb/include/lldb/Target StackFrameList.h, lldb/source/Target StackFrameList.cpp

[lldb] Use llvm::sys::RWMutex instead of std::shared_mutex (NFC) (#197847)

On Darwin, pthread_rwlock is faster than std::shared_mutex, which is why
the implementation of llvm::sys::RWMutex used that on our platform.
Everywhere else, it uses std::shared_mutex under the hood.

Also see #70151

rdar://177113951
DeltaFile
+11-11lldb/source/Target/StackFrameList.cpp
+4-5lldb/include/lldb/Target/StackFrameList.h
+15-162 files

LLVM/project 81e41bdllvm/lib/MC DXContainerInfo.cpp, utils/bazel/llvm-project-overlay/llvm BUILD.bazel

[Bazel] Port ca6e386cbf5b3e75a2a62e6c4d29b24109727a52 (#197841)

obj2yaml now depends on MC (although probably not for much), and remove
an unnecessary header creating a layering violation.
DeltaFile
+1-0utils/bazel/llvm-project-overlay/llvm/BUILD.bazel
+0-1llvm/lib/MC/DXContainerInfo.cpp
+1-12 files

LLVM/project 42b563bflang/lib/Optimizer/OpenMP MapInfoFinalization.cpp, flang/test/Integration/OpenMP map-types-and-sizes.f90

[Flang][OpenMP][Offload] Modify MapInfoFinalization to handle attach mapping and 6.1's ref_* and attach map keywords (#177715)

This PR is one of four required to implement the attach mapping
semantics in Flang, alongside the ref_ptr/ref_ptee/ref_ptr_ptee map
modifiers and the attach(always/never/auto) modifiers.

This PR is the MapInfoFinalization changes required to support these
features, it mainly deals with applying the correct attach map type and
manipulating the descriptor types maps for base address and descriptor
so that when we specify ref_ptr/ref_ptee we emit one of the two maps and
when we emit ref_ptr_ptee we emit our usual default maps. In all cases
we add the "glue" of an new attach map except in cases where a user has
provided attach never. In cases where we are provided an always, we
apply the always map type to our attach maps.

It's important to note the runtime has a toggle for the auto map
behavior, which will flip the attach behavior to the newer semantics or
the older semantics for backwards compatibility (outside the purview of
this PR but good to mention).
DeltaFile
+715-332flang/lib/Optimizer/OpenMP/MapInfoFinalization.cpp
+388-284mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
+273-0mlir/test/Target/LLVMIR/omptarget-host-ref-semantics.mlir
+101-165flang/test/Integration/OpenMP/map-types-and-sizes.f90
+107-0flang/test/Lower/OpenMP/attach-and-ref-modifier.f90
+30-61mlir/test/Target/LLVMIR/omptarget-record-type-with-ptr-member-host.mlir
+1,614-84264 files not shown
+2,300-1,21470 files

LLVM/project 21e436fclang/lib/Analysis/LifetimeSafety LifetimeAnnotations.cpp, clang/test/Sema warn-lifetime-safety-lifetimebound.cpp

[LifetimeSafety] Recognize declarations nested under std namespace (#197604)

Previously `isInStlNamespace()` only checked the immediate declaration
context. This missed declarations nested below `std` through records or
intermediate namespaces, such as `std::basic_string_view` constructors.

This commit fixes the problem by walking the `DeclContext` chain in
`isInStlNamespace`.

Closes #197454
DeltaFile
+12-11clang/lib/Analysis/LifetimeSafety/LifetimeAnnotations.cpp
+4-0clang/test/Sema/warn-lifetime-safety-lifetimebound.cpp
+3-0clang/test/Sema/Inputs/lifetime-analysis.h
+19-113 files

LLVM/project 439d42fclang/test/CIR/CodeGen cleanup-scope-goto-out.cpp, clang/test/CodeGen builtins-nvptx-mma.cu

[𝘀𝗽𝗿] changes to main this commit is based on

Created using spr 1.3.6-beta.1

[skip ci]
DeltaFile
+3,706-328llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-load-local.mir
+344-258llvm/test/CodeGen/AMDGPU/llvm.amdgcn.kill.ll
+284-284clang/test/CodeGen/builtins-nvptx-mma.cu
+246-112llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-load-store-s16-true16.mir
+356-0clang/test/CIR/CodeGen/cleanup-scope-goto-out.cpp
+318-0llvm/lib/Transforms/IPO/Instrumentor.cpp
+5,254-982543 files not shown
+9,367-2,635549 files

LLVM/project 7022d6dclang/test/CIR/CodeGen cleanup-scope-goto-out.cpp, clang/test/CodeGen builtins-nvptx-mma.cu

[𝘀𝗽𝗿] initial version

Created using spr 1.3.6-beta.1
DeltaFile
+3,706-328llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-load-local.mir
+395-389llvm/utils/gn/secondary/clang/lib/Headers/BUILD.gn
+344-258llvm/test/CodeGen/AMDGPU/llvm.amdgcn.kill.ll
+284-284clang/test/CodeGen/builtins-nvptx-mma.cu
+246-112llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-load-store-s16-true16.mir
+356-0clang/test/CIR/CodeGen/cleanup-scope-goto-out.cpp
+5,331-1,371573 files not shown
+9,970-3,154579 files

LLVM/project 6c1381eclang/test/CIR/CodeGen cleanup-scope-goto-out.cpp, clang/test/CodeGen builtins-nvptx-mma.cu

[𝘀𝗽𝗿] initial version

Created using spr 1.3.6-beta.1
DeltaFile
+3,706-328llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-load-local.mir
+344-258llvm/test/CodeGen/AMDGPU/llvm.amdgcn.kill.ll
+284-284clang/test/CodeGen/builtins-nvptx-mma.cu
+246-112llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-load-store-s16-true16.mir
+356-0clang/test/CIR/CodeGen/cleanup-scope-goto-out.cpp
+318-0llvm/lib/Transforms/IPO/Instrumentor.cpp
+5,254-982544 files not shown
+9,367-2,637550 files

LLVM/project fda2694clang/test/CIR/CodeGen cleanup-scope-goto-out.cpp, clang/test/CodeGen builtins-nvptx-mma.cu

[𝘀𝗽𝗿] changes to main this commit is based on

Created using spr 1.3.6-beta.1

[skip ci]
DeltaFile
+3,706-328llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-load-local.mir
+344-258llvm/test/CodeGen/AMDGPU/llvm.amdgcn.kill.ll
+284-284clang/test/CodeGen/builtins-nvptx-mma.cu
+246-112llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-load-store-s16-true16.mir
+356-0clang/test/CIR/CodeGen/cleanup-scope-goto-out.cpp
+318-0llvm/lib/Transforms/IPO/Instrumentor.cpp
+5,254-982543 files not shown
+9,367-2,635549 files

LLVM/project 8095cbaflang/test/Integration/OpenMP map-types-and-sizes.f90, mlir/lib/Target/LLVMIR/Dialect/OpenMP OpenMPToLLVMIRTranslation.cpp

[OpenMP][MLIR] Modify OpenMP Dialect lowering to support attach mapping (#179023)

This PR adjusts the LLVM-IR lowering to support the new attach map type
that the runtime uses to link data and pointer together, this swaps the
mapping from the older OMP_MAP_PTR_AND_OBJ map type in most cases and
allows slightly more complicated ref_ptr/ptee and attach semantics.
DeltaFile
+378-281mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
+273-0mlir/test/Target/LLVMIR/omptarget-host-ref-semantics.mlir
+101-165flang/test/Integration/OpenMP/map-types-and-sizes.f90
+27-58mlir/test/Target/LLVMIR/omptarget-record-type-with-ptr-member-host.mlir
+70-0offload/test/offloading/fortran/map_attach_always.f90
+55-0offload/test/offloading/fortran/map_attach_never.f90
+904-50415 files not shown
+1,077-59821 files

LLVM/project 646edb0clang-tools-extra/clang-tidy/bugprone NotNullTerminatedResultCheck.cpp, clang-tools-extra/modularize Modularize.cpp

[clang][NFC] Remove `macro_begin` and `macro_end` from `Preprocessor` (#197817)

Use `macros()` wherever posible. This gives us the following advantages:

1. We can use the range-base for loop for simpler looking code.
2. We more ergonomically use algorithms.
3. We can avoid the duplicate work of checking if we need to call
`ExternalSource->ReadDefinedMacros()` that was in both `macro_begin` and
`macro_end`. In some cases, we save this extra work once per loop
iteration, not just one extra total.
4. No user confusion deciding which version they should call
5. Reduce the size of `Preprocessor.h` and the number of members in
`Preprocessor`.

Using `macros` ends up being the better solution in every case, so since
all callers were migrated from `macro_begin` and `macro_end` to
`macros`, get rid of `macro_begin` and `macro_end`.

---------

Co-authored-by: Victor Chernyakin <chernyakin.victor.j at outlook.com>
DeltaFile
+17-26clang-tools-extra/clang-tidy/bugprone/NotNullTerminatedResultCheck.cpp
+7-20clang/lib/Lex/Preprocessor.cpp
+9-14lldb/source/Plugins/ExpressionParser/Clang/ClangModulesDeclVendor.cpp
+6-10clang/lib/Sema/SemaCodeComplete.cpp
+1-8clang/include/clang/Lex/Preprocessor.h
+3-5clang-tools-extra/modularize/Modularize.cpp
+43-832 files not shown
+50-908 files

LLVM/project b2e29falldb/source/Plugins/SymbolFile/DWARF DWARFASTParserClang.cpp

[lldb][Clang] Removed redundant code in DWARFASTParserClang (#197802)

decl_up is initialized here but doesn't appear to be used or moved
anywhere before it goes out of scope. If the Declaration info isn't
needed for the FunctionSP, it should probably be removed.
DeltaFile
+0-5lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
+0-51 files

LLVM/project 545f162clang/docs ReleaseNotes.rst, clang/lib/AST ExprConstant.cpp

[clang] Implement constexpr DesignatedInitUpdateExpr. (#196427)

DesignatedInitUpdateExpr exists to handle some obscure edge cases in C,
where the usual InitListExpr canonicalization can't be performed.
Previously, we didn't need constant evaluation for this, but C23
constexpr means we need to evaluate this before codegen.

Implementation is mostly straightforward: just need to evaluate the two
subexpressions, in order, and skip any NoInitExprs.

Along the way, I ran into an issue with the way we manage array APValues
for non-bytecode constant evaluation; fix reallocation to work
correctly.

Fixes #193373.  Fixes #196450.
DeltaFile
+51-15clang/lib/AST/ExprConstant.cpp
+21-1clang/lib/AST/ByteCode/Compiler.cpp
+14-0clang/test/Sema/constexpr.c
+10-0clang/test/SemaCXX/cxx2c-constexpr-placement-new.cpp
+2-0clang/docs/ReleaseNotes.rst
+1-0clang/lib/AST/ByteCode/Compiler.h
+99-166 files

LLVM/project cc01725flang/lib/Lower/OpenMP ClauseProcessor.cpp, flang/test/Lower/OpenMP attach-and-ref-modifier.f90

Revert "[Flang][OpenMP][MLIR] Add attach and ref map type lowering to MLIR" (#197834)

Reverts llvm/llvm-project#177301
DeltaFile
+0-107flang/test/Lower/OpenMP/attach-and-ref-modifier.f90
+2-29flang/lib/Lower/OpenMP/ClauseProcessor.cpp
+9-0flang/test/Lower/OpenMP/Todo/attach-modifier.f90
+11-1363 files

LLVM/project 69e80c2flang/lib/Optimizer/OpenMP MapInfoFinalization.cpp, flang/lib/Utils OpenMP.cpp

Revert "[Flang][MLIR][OpenMP] Add distinct var_ptr_ptr_type to omp.map.info operations & remove ref_ptr_ptee" (#197835)

Reverts llvm/llvm-project#177302
DeltaFile
+16-25flang/lib/Optimizer/OpenMP/MapInfoFinalization.cpp
+10-20mlir/lib/Dialect/OpenMP/IR/OpenMPDialect.cpp
+11-18flang/lib/Utils/OpenMP.cpp
+14-14flang/test/Fir/convert-to-llvm-openmp-and-fir.fir
+10-17mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
+11-11flang/test/Transforms/omp-map-info-finalization.fir
+72-10541 files not shown
+169-21847 files

LLVM/project 385a0fbflang/lib/Optimizer/OpenMP MapInfoFinalization.cpp, flang/lib/Utils OpenMP.cpp

Revert "[Flang][MLIR][OpenMP] Add distinct var_ptr_ptr_type to omp.map.info o…"

This reverts commit 1d20496a0c3df336803ae53f28d4c232dafca46f.
DeltaFile
+16-25flang/lib/Optimizer/OpenMP/MapInfoFinalization.cpp
+10-20mlir/lib/Dialect/OpenMP/IR/OpenMPDialect.cpp
+11-18flang/lib/Utils/OpenMP.cpp
+14-14flang/test/Fir/convert-to-llvm-openmp-and-fir.fir
+10-17mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
+11-11flang/test/Transforms/omp-map-info-finalization.fir
+72-10541 files not shown
+169-21847 files

LLVM/project db66910flang/lib/Lower/OpenMP ClauseProcessor.cpp, flang/test/Lower/OpenMP attach-and-ref-modifier.f90

Revert "[Flang][OpenMP][MLIR] Add attach and ref map type lowering to MLIR (#…"

This reverts commit d6dbe444fb457fba9ad7b4cfee3081643581f4b3.
DeltaFile
+0-107flang/test/Lower/OpenMP/attach-and-ref-modifier.f90
+2-29flang/lib/Lower/OpenMP/ClauseProcessor.cpp
+9-0flang/test/Lower/OpenMP/Todo/attach-modifier.f90
+11-1363 files

LLVM/project 1d20496flang/lib/Optimizer/OpenMP MapInfoFinalization.cpp, flang/lib/Utils OpenMP.cpp

[Flang][MLIR][OpenMP] Add distinct var_ptr_ptr_type to omp.map.info operations & remove ref_ptr_ptee (#177302)

This is a precursor patch to attach and ref_ptr/ptee mapping that I
intend to upstream
over the next few weeks. The attach maps require both the type of the
descriptor and
the pointed to data to calculate the appropriate offload/base pointers
and size. In
the base case of ref_ptr_ptee all of this information can be gathered
from the pointer
and pointee maps, but in cases where we have only one (i.e.
ref_ptr/ref_ptee) we will
be missing one of the key elements required to create an corresponding
attach map.

So, this PR basically adds the ability to ferry around the type of both
var_ptr and
var_ptr_ptr as opposed to just var_ptr, then we can emit attach maps as
seperate

    [8 lines not shown]
DeltaFile
+25-16flang/lib/Optimizer/OpenMP/MapInfoFinalization.cpp
+20-10mlir/lib/Dialect/OpenMP/IR/OpenMPDialect.cpp
+18-11flang/lib/Utils/OpenMP.cpp
+14-14flang/test/Fir/convert-to-llvm-openmp-and-fir.fir
+17-10mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
+11-11flang/test/Transforms/omp-map-info-finalization.fir
+105-7241 files not shown
+218-16947 files

LLVM/project d6dbe44flang/lib/Lower/OpenMP ClauseProcessor.cpp, flang/test/Lower/OpenMP attach-and-ref-modifier.f90

[Flang][OpenMP][MLIR] Add attach and ref map type lowering to MLIR (#177301)

This doesn't implement the functionality, just the relevant map type
lowering to MLIR's omp.map.info. The more complicated changes to
MapInfoFinalizationPass.cpp and OpenMPTOLLVMIRTranslation.cpp to support
attach map and the various ref/attach semantics will come in a
subsequent set of PRs. This just helps compartmentalize the changeset.
DeltaFile
+107-0flang/test/Lower/OpenMP/attach-and-ref-modifier.f90
+29-2flang/lib/Lower/OpenMP/ClauseProcessor.cpp
+0-9flang/test/Lower/OpenMP/Todo/attach-modifier.f90
+136-113 files

LLVM/project ca6e386llvm/include/llvm/MC DXContainerInfo.h, llvm/lib/MC DXContainerInfo.cpp

Reland "[DirectX][ObjectYAML] Add ILDN part support" (#197749)

This relands #194508, which was reverted in #197348.

This reland addresses the revert reasons:
- Rename `DXContainerYAML::DebugName::DebugName` to `Filename` to avoid
compilation failures on older `cl.exe` versions due to field name
matching
  its class name.
- Fix layering by reverting the MC -> Object dependency introduced
previously:
`ILDNData` is no longer defined in `llvm/Object/DXContainer.h` and used
  by MC. Instead, ILDN fields are represented by `mcdxbc::DebugName` in
  `llvm/MC/DXContainerInfo.h`, and Object uses that type (Object already
  depends on MC).
DeltaFile
+64-0llvm/test/tools/obj2yaml/DXContainer/ILDNPart.yaml
+46-2llvm/lib/Object/DXContainer.cpp
+41-0llvm/lib/MC/DXContainerInfo.cpp
+37-0llvm/unittests/Object/DXContainerTest.cpp
+35-0llvm/include/llvm/MC/DXContainerInfo.h
+33-0llvm/unittests/ObjectYAML/DXContainerYAMLTest.cpp
+256-211 files not shown
+400-217 files

LLVM/project 8c317a1clang-tools-extra/clang-tidy/bugprone NotNullTerminatedResultCheck.cpp

Update clang-tools-extra/clang-tidy/bugprone/NotNullTerminatedResultCheck.cpp

Co-authored-by: Victor Chernyakin <chernyakin.victor.j at outlook.com>
DeltaFile
+1-1clang-tools-extra/clang-tidy/bugprone/NotNullTerminatedResultCheck.cpp
+1-11 files

LLVM/project 57fcde7clang/include/clang/Options Options.td, clang/lib/Driver/ToolChains Clang.cpp

[AArch64] Make width of stack protector guard value load configurable. (#195379)

Certain embedded targets store the value of the stack protector global
in an MMIO register, which requires a load of a specific width. Allow
changing the backend to emit a 4-byte load for the value of the stack
protector, instead of an 8-byte load. (Or vice versa for an ilp32
target.)

The current version of the patch has a limitation: it still allocates a
pointer-sized stack slot for the guard. This could be fixed in the
future, if it becomes relevant.
DeltaFile
+44-0llvm/test/CodeGen/AArch64/stack-guard-width.ll
+19-0clang/lib/Driver/ToolChains/Clang.cpp
+14-3llvm/lib/Target/AArch64/AArch64InstrInfo.cpp
+12-0llvm/lib/IR/Module.cpp
+9-0clang/include/clang/Options/Options.td
+5-0clang/test/CodeGen/stack-protector-guard.c
+103-33 files not shown
+113-39 files

LLVM/project d89d4b2lldb/test/API/functionalities/data-formatter/bytecode-summary main.cpp TestBytecodeSummary.py, lldb/test/API/functionalities/data-formatter/bytecode-synthetic main.cpp TestBytecodeSynthetic.py

[lldb][bytecode] Remove @skipUnlessDarwin on tests (#197808)
DeltaFile
+10-2lldb/test/API/functionalities/data-formatter/bytecode-summary/main.cpp
+10-2lldb/test/API/functionalities/data-formatter/bytecode-synthetic/main.cpp
+0-2lldb/test/API/functionalities/data-formatter/bytecode-synthetic/TestBytecodeSynthetic.py
+0-1lldb/test/API/functionalities/data-formatter/bytecode-summary/TestBytecodeSummary.py
+20-74 files

LLVM/project 7498075lldb/source/Plugins/LanguageRuntime/ObjC ObjCLanguageRuntime.h

[lldb] Use identity hashing for HashToISAMap in ObjCLanguageRuntime (#197759)

The keys of HashToISAMap are already hashes, and can be used as-is.

---------

Co-authored-by: Adrian Prantl <adrian.prantl at gmail.com>
DeltaFile
+13-1lldb/source/Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.h
+13-11 files

LLVM/project dde16c6llvm/test/CodeGen/Thumb2 mve-clmul.ll

[ARM][MVE] Make clmul test hard-float. NFC (#197825)

This helps show the important codegen more clearly.
DeltaFile
+7,377-7,311llvm/test/CodeGen/Thumb2/mve-clmul.ll
+7,377-7,3111 files

LLVM/project 5210023llvm/include/llvm/CodeGen MachineRegisterInfo.h, llvm/lib/CodeGen MIRPrinter.cpp

[MIR] Save internal VirtRegMap state

Adds two optional fields to the per-vreg YAML record so MIR tests can
express VirtRegMap state that previously had no representation:

  registers:
    - { id: 1, class: vgpr_32, split-from: '%0', assigned-phys: '$vgpr5' }

Testing passes that consume sibling-register information (e.g.
InlineSpiller) requires constructing a VirtRegMap with split
relationships from a MIR test, which implies triggering live-range
splitting at minimum and make reproducers unnecessarily complicated.

So this change introduces a mechanism to serialize/deserialize the state
of the VirtRegMap pass.

Mechanism:
- For serialization:
  - MIRPrinter emits the new fields only when the VirtRegMap is available.

    [13 lines not shown]
DeltaFile
+40-0llvm/lib/CodeGen/MIRParser/MIRParser.cpp
+24-9llvm/lib/CodeGen/MIRPrinter.cpp
+32-0llvm/test/CodeGen/MIR/AMDGPU/virtregmap-stash.mir
+29-0llvm/include/llvm/CodeGen/MachineRegisterInfo.h
+18-0llvm/test/CodeGen/MIR/AMDGPU/virtregmap-stash-bad-phys.mir
+17-0llvm/test/CodeGen/MIR/AMDGPU/virtregmap-stash-self-split.mir
+160-97 files not shown
+241-2013 files

LLVM/project efd5514llvm/test/CodeGen/AMDGPU splitkit-copy-live-lanes.mir ra-inserted-scalar-instructions.mir, llvm/test/CodeGen/X86 statepoint-invoke-ra-inline-spiller.mir

[MIR] Serialize/Deserialize MachineInstr::LRSplit attribute

The LRSplit MachineInstr flag is set by SplitKit on copies inserted for
live-range splitting.
Until now the flag had no MIR-text representation.

This patch fixes that so that it gets easier to reproduce/capture issues
that involves SplitKit.

Round-trip coverage in
llvm/test/CodeGen/MIR/AMDGPU/lr-split-flag.mir.
DeltaFile
+168-168llvm/test/CodeGen/AMDGPU/splitkit-copy-live-lanes.mir
+36-36llvm/test/CodeGen/AMDGPU/ra-inserted-scalar-instructions.mir
+32-32llvm/test/CodeGen/AMDGPU/splitkit-copy-bundle.mir
+27-27llvm/test/CodeGen/AMDGPU/ran-out-of-sgprs-allocation-failure.mir
+22-22llvm/test/CodeGen/X86/statepoint-invoke-ra-inline-spiller.mir
+22-22llvm/test/CodeGen/AMDGPU/inflated-reg-class-snippet-copy-use-after-free.mir
+307-30731 files not shown
+436-40237 files

LLVM/project 8837d66llvm/test/CodeGen/AMDGPU regalloc-hoist-spill-live-range-upd.ll regalloc-hoist-spill-live-range-upd.mir

[AMDGPU][test] Use mir test for regalloc issue

Use the newly introduced split-from flag to produce a more robust test case
for the hoistSpillInsideBB live-range update issue.

NFC

DeltaFile
+0-2,870llvm/test/CodeGen/AMDGPU/regalloc-hoist-spill-live-range-upd.ll
+71-0llvm/test/CodeGen/AMDGPU/regalloc-hoist-spill-live-range-upd.mir
+71-2,8702 files

LLVM/project ced50aaclang/lib/Sema SemaDeclAttr.cpp, clang/test/SemaObjC attr-cleanup.m

Allow ObjC writeback conversion in cleanup attribute type check (#195318)

Prior to #164440, CheckAssignmentConstraints in the cleanup attribute
handler ran before ObjC lifetime qualifiers were inferred on the
variable. It compared against a type without '__strong' and accepted
both 'T **' to 'T *__autoreleasing *' and 'T **' to 'T
*__unsafe_unretained *'. #164440 reversed the order, so the check now
runs after '__strong' is inferred and rejects both 'T *__strong *' to 'T
*__autoreleasing *' and 'T *__strong *' to
'T *__unsafe_unretained *'.

Fix the valid case by falling back to isObjCWritebackConversion when the
assignment check fails. This re-allows the '__strong' to
'__autoreleasing' writeback conversion while continuing to reject
'__strong' to '__unsafe_unretained'.

rdar://175133715
DeltaFile
+29-2clang/test/SemaObjC/attr-cleanup.m
+4-2clang/lib/Sema/SemaDeclAttr.cpp
+33-42 files

LLVM/project 36fac6fllvm/test/Instrumentation/Instrumentor default_config.json

[Instrumentor] Fix test (#197820)
DeltaFile
+8-0llvm/test/Instrumentation/Instrumentor/default_config.json
+8-01 files

LLVM/project 1b47520clang/include/clang/Options FlangOptions.td, flang/docs Extensions.md

[flang][docs][nfc] Wordsmith -frelaxed-c-loc-checks flag description (#197804)

Clarify that unexpected behavior reflects the compiler's design choice
not to track aliases from non-target non-pointer C_LOC() arguments,
rather than implying a compiler defect. Align phrasing across
FlangOptions.td and Extensions.md.

Also add the `-checks` suffix to the flag per @sscalpone's suggestion.
DeltaFile
+6-8clang/include/clang/Options/FlangOptions.td
+8-6flang/docs/Extensions.md
+1-1flang/lib/Frontend/CompilerInvocation.cpp
+1-1flang/test/Semantics/c_loc01-relaxed.f90
+16-164 files