[JTS] Correctly handle all zero profile values in VP metadata (#193402)
We can end up with cases where the VP metadata only has zero profile
values, for example if all of the functions end up being external and
uninstrumented. This caused fixes an assertion failure on the BOLT
builder that came up last time we tried to turn the pass on by default.
[lldb] Fix potential TestAlwaysRunThreadNames flakiness (#193405)
Change the stepped function to spin on a flag until the helper thread
advances the counter, so the step-over can only complete if the helper
thread actually ran.
Fixes #193398
[llvm-mc][AsmMatcherEmitter] Fix the minimum ConversionTable entry size (#191977)
When working on a target with fully customized instruction
conversion method, there's a build failure due to the case that in the
target's generated asm matcher, the size of `ConversionTable` entry is 2
(i.e., the minimum size defined in `AsmMatcherEmitter` TableGen
backend).
However, for a target that has customized conversion method for all
instructions, a `ConversionTable` entry should be looking like: `{
CVT_<the-custom-conversion-method>, <the-position-of-operand>, CVT_Done
}`, where the position of operand for custom conversion is by-default 0.
This commit includes a test case to illustrate this scenario, along with
a little fix.
AMDGPU: Back-propagate wqm for sources of side-effect instruction
For readfirstlane instruction, as it would get undefined value if exec
is zero. To handle the case that only helper lanes execute the parent
block, we let the readfirstlane to execute under wqm. But this is not
enough. If the parent block was also executed by non-helper lanes, we
also need to make sure its sources were calculated under wqm. Otherwise,
if the instruction that generate the source of readfirstlane was
executed under exact mode, the value would contain garbage data in help
lane. The garbage data in helper lane maybe returned by the
readfirstlane running under wqm.
To fix this issue, we need to enforce the back-propagation of wqm for
instructions like readfirstlane. This was only done if the instruction
was possibly in the middle of wqm region (by checking OutNeeds).
[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.
[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.