[LV][RISCV][NFC] Add explicit LMUL controls via computeFeasibleMaxVF
Add components of maxVF and its support for scalable
vectorization. The default for unspecified RISCV is
LMUL=4 with this change, so some tests will have
the flag that controls max LMUL to extend to LMUL=8
when the request is made.
[lldb] Add exe_ctx to examples commands (#193347)
Updates example python commands to use `SBExecutionContext` where
beneficial. This was to remove uses of
`GetSelected{Target,Thread,Frame}`.
While making this changes, I also renamed `dict` parameters to
`internal_dict`. In examples, it's better not to shadow `dict`, which is
the builtin type and constructor for dictionaries.
Lastly, I removed a command (`section_ptr_refs`) whose function was
disabled, and non-functional (it calls a non-existent function
`load_dylib`).
[clang-tidy] Suggest materializing temporary ranges in readability-use-anyofallof (#185791)
While the check still correctly identifies that the loop can be replaced
with `any_of`/`all_of`, reusing these temporaries directly in the
replacement is often unsafe or leads to compilation errors. So we
suggest a `note: ` for these cases.
Closes https://github.com/llvm/llvm-project/issues/185593
[clang][DebugInfo] Set linkage name for dynamic initializer/destructor debug info (#189794)
Compiler-generated dynamic initializers and atexit destructors for global
variables were missing DW_AT_linkage_name in their DWARF debug info.
For CodeView targets, different template instantiations of the same
variable all shared the same human-readable name, making them
indistinguishable in the debug info.
Set LinkageName to Fn->getName() if subprogram name does not match
the mangled name.
[PDB] Refactor cache strategy for function symbol lookups (#188927)
The original algorithm only caches the symbols that are being queried.
The module needs to be decoded again and again even when looking up the
same symbol but different address. This is time consuming when looking
for a large amount of symbol info. This patch uses IntervalMap to cache
decoded symbols to avoid duplicate decoding. We tested the symbol lookup
time for all symbols in symtab for Blender. The time was shortened by
258x relative to the original algorithm. This will greatly improve the
experience of loading symbols for pseudo probe on Windows.
[MC][debug_frame] Fix a bug in MCDwarfFrameEmitter::emit() so that per-function CIE can be generated when CIEs are different (#192727)
When CIEs of the .debug_frame section are different across multiple
functions, CIEs must not be deduplicated. This PR fixes a bug that has
prevented generating per-function CIE for `IsEH=false` when they are
different.
The test case (DwarfDebugFrameCIE.cpp) generation is assisted by LLM
agents.
[UnsafeBufferUsage][SSAF] Change -Wunsafe-buffer-usage API for SSAF-based analysis (#191934)
Change -Wunsafe-buffer-usage API to match `Stmt`s instead of `Decl`s. It
is up to clients of the API to determine how to traversal a `Decl`. In
this change, the client is SSAF-based
UnsafeBufferUsageExtractor.
---------
Co-authored-by: Balázs Benics <benicsbalazs at gmail.com>
[NFC][LowerTypeTests] Add AArch64 and X86 jump table tests with debug info (#192735) (#193358)
It just recommits test copied from non dbg version.
Implementation is https://github.com/llvm/llvm-project/pull/192736.
This is the same as #192735, accidentally merged into spr/users branch.
[ConstantFolding] Increase folding limit for vector loads to 128 bytes (#192775)
In FoldReinterpretLoadFromConst, ReadDataFromGlobal bails out when
BytesLoaded exceeds 32 bytes. This prevent folding in our downstream
OpenCL case where global constant is [16 x float] array and is loaded as
float16 vector, which is 64 bytes.
This PR increases BytesLoaded cap to 128 bytes, to accommodate large
vector support, e.g. double16 type in OpenCL. For scalar integer load,
the limit remains 32 bytes to avoid regression on load from string
literal.
---------
Co-authored-by: Nikita Popov <github at npopov.com>
[lldb] Fix a couple of return type / return value mismatches (#191464)
* `EmulateInstruction::ReadMemory()` returns a boolean value and is used
in boolean contexts, but the return type is specified as `size_t`.
Change it to `bool`. This also aligns it with `WriteMemory()`.
* `ClangExpressionDeclMap::GetSymbolAddress()` returns `false` if
`Target` is not available, but it is expected to return an address.
Change it to return `LLDB_INVALID_ADDRESS`.
* `ValueObject::GetPointeeData()` returns `true`, whereas a return value
of type `size_t` is expected. Change it to return 0 (this code is
unreachable).