[CIR] __builtin_source_location lowering for constant (#194505)
This handles the UnnamedGlobalConstantDecl lowering, which is only used
for the source-location object. This uses similar logic to the classic
compiler, so we end up with roughly the same IR.
There is a slight difference in how we choose which strings to uniquify
(preexisting) and how we name them/name duplicates, but it isn't really
relevant to the text itself.
[bazel] Prevent bazel from scanning .git metadata (#194745)
This prevents race condition when git triggers its GC during a bazel
build. Bazel build fails as follows in that case:
```
Loading: 0 packages loaded
ERROR: Failed to list directory contents, for .git/objects/05, skipping: /var/lib/buildkite-agent/llvm-project-bazelbot/.git/objects/05 (No such file or directory)
ERROR: Target parsing failed due to unexpected exception: /var/lib/buildkite-agent/llvm-project-bazelbot/.git/objects/05 (No such file or directory)
Loading: 0 packages loaded
```
[git] [LLVM utils] Require `pyjwt[crypto]==2.12.1`, `cryptography==47.0.0`, and `urllib3==2.6.3` (#194707)
**Context:**
The MSVC team (👋 ) consumes the LLVM repo and is receiving security
alerts due to the git utils `requirements.txt` file requesting
transitive dependencies with known CVEs.
Namely, we're looking at the following CVEs:
- https://nvd.nist.gov/vuln/detail/CVE-2026-32597, fixed in
`pyjwt>=2.12.0`
- https://nvd.nist.gov/vuln/detail/CVE-2026-26007, fixed in
`cryptography>=46.0.5`
- https://nvd.nist.gov/vuln/detail/CVE-2026-21441, fixed in
`urllib3>=2.6.3`
**This PR** aims to address this re-computing the `requirements.txt` for
those dependencies, via:
[496 lines not shown]
[WebAssembly] Print BB names better for CFGStackify debugging (#194187)
Currently, if a MBB does not have a corresponding original bitcode BB,
because it was generated later in the backend,
`MachineBasicBlock::getName()` returns an empty string. This adds
`getBBName` method, which prints BB names in the format of
`bb.3.catch.start` in case the original BB name is `catch.start`, and
just `bb.3` when there is no matching original BB, and uses it for
`LLVM_DEBUG` statements.
[SLP] Allow strided memory operations with lengths equal to MinProfitableStridedOps (#194506)
Currently we've excluded chains with length equal to `MinProfitableStridedOps`, this change matches how we have defined these knobs.
[libc++] Refactor the SPEC benchmark runner (#194737)
This makes it less convoluted and more robust to when substeps fail. The
previous incarnation had too much logic cramed into the Python gen test,
which is quite difficult to understand.
palemoon: Update to 34.2.1
Many security issues were addressed, including potential crash
scenarios and code correctness issues. As a summary: 50 potential
vulnerabilities were found applicable and fixed, 20 issues had DiD
code changes applied, and 4 were already mitigated by us before being
reported. Of the reported vulnerabilities, 270 were not applicable to
our code (with the vast majority pertaining to e10s/multi-process
browser architecture) and 6 low-impact ones were marked for further
investigation at a later time.
[lldb] Define breakpoint location "." to mean the location(s) at which the current thread is stopped (#194272)
Adds `.` as a new `breakpt-id` syntax. Users can specify `.` to mean the breakpoint
location(s) that caused the current thread to stop.
I selected `.` to mean the current breakpoint locations for two reasons. In a shells,
period means <ins>current</ins> directory. In prose, a period is a <ins>stop</ins>.
My workflow often starts with multiple breakpoint locations, such as with regex
breakpoints, or basename breakpoints for overloaded/overridden names. As locations are
hit, I realize which locations are no longer needed. This new syntax makes it quick and
easy to disable the currently stopped location(s).
Another use case for this is to quickly repeat commands for the current location:
``` break com add -o 'p someVar' . ```
Usage example:
[15 lines not shown]
Remove truenas-initrd.py and now dead dependencies
This commit removes local copy of truenas-initrd.py script, which
is now provided by https://github.com/truenas/upgrade_pyutils.
Since this script was the only consumer of the rootfs util to
toggle readonly property on filesystem it is also removed.
(cherry picked from commit 3d84369e87c7c6636cf9b96c74135dffa6812ee8)
NAS-140816 / 27.0.0-BETA.1 / Remove truenas-initrd.py and now dead dependencies (#18830)
This commit removes local copy of truenas-initrd.py script, which is now
provided by https://github.com/truenas/upgrade_pyutils.
Since this script was the only consumer of the rootfs util to toggle
readonly property on filesystem it is also removed.
[AMDGPU][MIRFormatter] Printer & parser for S_WAITCNT human-readable mask (#193895)
This patch implements a printer and parser for the S_WAITCNT mask. It
prints the mask in a human-readable format, showing the counter values
like `Vmcnt_<NUM>_Expcnt_<NUM>_Lgkmcnt_<NUM>`.
The format matches the printing style of S_WAITCNT_DEPCTR. For example:
```
S_WAITCNT .Vmcnt_0_Expcnt_0_Lgkmcnt_0
S_WAITCNT .Expcnt_0
S_WAITCNT .AllOff
```
Counters at their maximum value (meaning "don't wait") are omitted. When
all counters are at max, `.AllOff` is printed.
Co-Authored-By: Claude Opus 4 <noreply at anthropic.com>
[HLSL] Make load methods take const attribute (#193858)
Previously, HLSL shaders that declare a local resource const, cannot use
the `Load` method, since it is not attributed with const.
Load does not change a resource, it is a read-only operation, so the
method should be marked const.
This PR changes the methods so that they are marked const.
Fixes https://github.com/llvm/llvm-project/issues/192557
Assisted by: Github Copilot
[clang][NFC] Mark CWG2810 as implemented and add a test (#194683)
CWG2810 (https://cplusplus.github.io/CWG/issues/2810.html) just removes
some wording that could be misinterpreted as saying "a compiler must not
emit any warnings in uninstantiated templates". Clang has never
misinterpreted it that way, so we don't need to do anything here.
[TableGen] Use guarded assert in constexpr functions
The constexpr functions in question take a scoped enum as an argument
and a switch statement returns a value for each value of the enum.
These are all legal statements in a constexpr function in C++14.
Under constexpr rules, the evaluation of a constexpr function cannot
lead to an evaluation of any prohibited forms of expressions. An
evaluation of the functions being discussed with a valid argument
will terminate at the switch, and an code that follows will not be
evaluated.
Using "llvm_unreachable" after the switch should be ok as long as
the expansion of the llvm_unreachable macro does not contain any
statements not allowed to appear in a constexpr function.
At the same time, GCC before v9 did not tolerate any unguarded calls
to non-constexpr functions after the switch.
To avoid using "llvm_unreachable", which can have multiple expansions,
[2 lines not shown]
[LLDB] Add module hook implementation (#185465)
Introduce a unified target hook command system for LLDB that handles
multiple target lifecycle events (module load, module unload, process
stop) through a single Hook class.
The existing target stop-hook commands remain unchanged for now, meaning
stop-hooks can now be created through either target stop-hook add or
target hook add -S.
A future follow-up can alias target stop-hook to the unified system to
consolidate the two paths.
New commands:
- target hook add [-o cmd] [-P class] [-u] [-S] - create a hook (fires
on module load by default, optionally on unload/stop)
- target hook add-filter [filter-opts] <hook-id> - attach stop-event
filters (shlib, function, file/line, thread) to an existing hook
- target hook list / delete / enable / disable - manage hooks
- target hook {enable,disable} {module-loaded|module-unloaded|stop-hook}
[10 lines not shown]
[clang][SSAF][NFC] Remove redundant overrides from analysis templates (#193086)
This PR removes redundant:
- `initialize()` and `finalize()` overrides from `SummaryAnalysis` already provided by `SummaryAnalysisBase`.
- `step()` and `finalize()` overrides from `DerivedAnalysis<>` already provided by `DerivedAnalysisBase`.