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

LLVM/project 85998d0llvm/include/llvm/Transforms/IPO Instrumentor.h, llvm/lib/Transforms/IPO Instrumentor.cpp

[Instrumentor] Introduce BasePointerIO to communicate base pointer information

Loads, stores, and later probably calls, can request a base pointer info
object from the user runtime. This object is queried right after the
base pointer of the operation is defined, and then passed to the
pre/post runtime calls of the loads and stores. This allows users to
inspect pointers early and once, but provide the analysis results to all
operations that might be executed in loops. A potential use case is to
lookup the size and start of the underlying object and then provide
those to the access runtime calls for in-bounds checking.
DeltaFile
+114-1llvm/lib/Transforms/IPO/Instrumentor.cpp
+63-1llvm/include/llvm/Transforms/IPO/Instrumentor.h
+17-14llvm/test/Instrumentation/Instrumentor/module_and_globals.ll
+30-0llvm/test/Instrumentation/Instrumentor/default_config.json
+3-2llvm/test/Instrumentation/Instrumentor/alloca_and_function.ll
+227-185 files

LLVM/project b7752b9llvm/lib/Analysis CostModel.cpp

[CostModel] Directly output the InstructionCost rather than using getValue() (#197794)

`getValue()` doesn't preserve fractional costs.
DeltaFile
+1-1llvm/lib/Analysis/CostModel.cpp
+1-11 files

LLVM/project 7c64cd6clang-tools-extra/clang-doc Representation.h

[clang-doc][nfc] Reformat and revise comment block
DeltaFile
+35-22clang-tools-extra/clang-doc/Representation.h
+35-221 files

LLVM/project 2fe361fclang-tools-extra/clang-doc Serialize.cpp Serialize.h

[clang-doc] Removed OwnedPtr alias

The alias served a purpose during migration, but now conveys the wrong
semantics, as the memory these pointers reference is interned inside
a local arena, and doesn't convey any sort of ownership.
DeltaFile
+40-38clang-tools-extra/clang-doc/Serialize.cpp
+29-42clang-tools-extra/clang-doc/Serialize.h
+17-18clang-tools-extra/clang-doc/Representation.cpp
+3-22clang-tools-extra/clang-doc/Representation.h
+8-8clang-tools-extra/clang-doc/JSONGenerator.cpp
+8-6clang-tools-extra/clang-doc/Generators.h
+105-13411 files not shown
+148-17717 files

LLVM/project 0d331c3clang-tools-extra/clang-doc Serialize.cpp BitcodeReader.cpp, clang-tools-extra/clang-doc/benchmarks ClangDocBenchmark.cpp

[clang-doc] Use distinct APIs for fixed arena allocation sites

Typically, code either always emits data into the TransientArena or the
PersistentArena. Use more explicit APIs to convey the intent directly
instead of relying on parameters or defaults. We were not always
consistent about this.
DeltaFile
+13-14clang-tools-extra/clang-doc/Serialize.cpp
+6-7clang-tools-extra/clang-doc/benchmarks/ClangDocBenchmark.cpp
+6-5clang-tools-extra/clang-doc/BitcodeReader.cpp
+4-5clang-tools-extra/clang-doc/Representation.cpp
+7-1clang-tools-extra/clang-doc/Representation.h
+36-325 files

LLVM/project b225b33llvm/docs Instrumentor.rst, llvm/lib/Transforms/IPO InstrumentorUtils.cpp

[Instrumentor] Add a property filter for static properties (#197530)

The user can define static filters in the json to limit instrumentation
to opportunities that match the static expression, e.g., is_volatile==1.
The matcher logic is pretty basic for now. Integer comparisons, string
equalities and `startswith` for strings are supported.

The commit was prepared with Claude (AI) and proofread/tested by me.
DeltaFile
+475-0llvm/lib/Transforms/IPO/InstrumentorUtils.cpp
+153-0llvm/docs/Instrumentor.rst
+114-0llvm/test/Instrumentation/Instrumentor/test_filter_parentheses.ll
+69-0llvm/test/Instrumentation/Instrumentor/test_filter.ll
+58-0llvm/test/Instrumentation/Instrumentor/test_filter_parentheses_config.json
+56-0llvm/test/Instrumentation/Instrumentor/test_filter_pointer_null_config.json
+925-014 files not shown
+1,242-220 files

LLVM/project 4ccf709clang-tools-extra/clang-tidy/bugprone NotNullTerminatedResultCheck.cpp

Fix `clang-tidy` missing `const` warning
DeltaFile
+1-1clang-tools-extra/clang-tidy/bugprone/NotNullTerminatedResultCheck.cpp
+1-11 files

LLVM/project 10de023clang-tools-extra/clang-tidy/bugprone BadSignalToKillThreadCheck.cpp

Fix `clang-tidy` identifier case warning
DeltaFile
+3-3clang-tools-extra/clang-tidy/bugprone/BadSignalToKillThreadCheck.cpp
+3-31 files

LLVM/project ad14105lldb/source/Target ThreadPlan.cpp

[lldb] Fix data race on ThreadPlan::GetNextID's plan-ID counter (#197811)

`g_nextPlanID` is a function-local static used to hand out unique
ThreadPlan IDs. It was a plain uint32_t, so concurrent ThreadPlan
constructors (e.g. each Process's private state thread queueing its base
plan) raced on the increment.

Make it std::atomic<uint32_t>. Prefix operator++ on std::atomic is
already an atomic fetch_add that returns the new value, so the call
sites are unchanged.

Found by ThreadSanitizer as part of #197792.
DeltaFile
+3-1lldb/source/Target/ThreadPlan.cpp
+3-11 files

LLVM/project edaded2lldb/source/ValueObject ValueObject.cpp

[lldb] Fix data race on ValueObject's unique-id counter (#197809)

g_value_obj_uid is a file-scope static that hands out unique IDs to
every ValueObject. It was a plain user_id_t, so concurrent
SBTarget::FindGlobalVariables / EvaluateExpression calls raced on the
increment.

Make it std::atomic<user_id_t>. Prefix operator++ on std::atomic is
already an atomic fetch_add that returns the new value, so the call
sites are unchanged.

Found by ThreadSanitizer as part of #197792.
DeltaFile
+2-1lldb/source/ValueObject/ValueObject.cpp
+2-11 files