[CIR] Lower static locals in C++ ctor and dtor bodies (#197089)
Static locals declared inside a C++ constructor or destructor body were
hitting `errorNYI("C++ constructors static var context")` (and the dtor
variant) in `CIRGenModule::getOrCreateStaticVarDecl`, even though the
rest of the static-local plumbing was already in place. The fix is to
mirror what classic CodeGen does at `CGDecl.cpp:328-334` — pick
`GlobalDecl(cd, Ctor_Base)` for ctors and `GlobalDecl(dd, Dtor_Base)`
for dtors instead of erroring.
Hit this trying to compile a couple of SPEC CPU 2026 benchmarks with
`-fclangir`: `flightdm` has a `static constexpr std::array` inside
`FGCondition::FGCondition`, and `gmsh` has a similar shape in
`MetaEl.cpp`. The minimum repro is the obvious one:
```c++
struct Foo { Foo() { static int x = 42; (void)x; } };
Foo f;
```
[6 lines not shown]
Revert "nvme: Only attach to storage NVMe devices"
This reverts commit 0a19464bf7afa35ce2aa7649152bc3a7629faa98. It's
incorrect for ahci attachments. Reverting to merge to stable/15
to merge to releng/15.1 for the release.
Sponsored by: Netflix
Fix for #177160 : [lldb] Real-time console pane for output in lldb tui (#197473)
This Change:
The stalling testcase in the PR: #177160 has been fixed.
- The cause of it was that the test required to get line 0 & line 99
from the console output with auto-scroll on. With limited display area,
this test was unreliable and impossible to achieve - which caused it to
wait / hang there.
Original Change :
New Console Pane that -
- captures stdout/stderr msgs from debugged process
- displays output to console in real-time
- provides scrolling and navigation features
- manages 10K line circular buffer
- auto-scroll on/off feature
[9 lines not shown]
[InstCombine] Use `isa<ConstantPointerNull>` for null pointer checks
Make InstCombine pointer-null checks use `isa<ConstantPointerNull>` rather than
generic zero checks, and fold inttoptr comparisons against the DataLayout null
pointer value.
[Clang][NFC] Add a regression test for #197067 (#197634)
Because concepts were checked for satisfaction in the wrong contexts, we
ended up creating deduction guides in the wrong contexts.
Fixes #197067
[clang] make evaluation of type constraint a SFINAE context (#197523)
Otherwise, errors when substituting a type constraint could
unintentionally make the program ill-formed.
This also strenghtens the assert which checks, when we are instantiating
templates, that we either have a code synthesis context, or that we are
in a SFINAE context.
[VPlan] Add helper to define CastInfo for casting to VP mixins (NFC) (#197494)
Add new generic VPMixinCast that can be used to define CastInfo from a
base class (like VPRecipeBase) to a mixin class (like VPIRMetadata)
through a list of supported recipe types.
Overall that makes defining the cast machinery quite a bit more compact.
It also adds a static_assert to prevent mis-use using std::is_base_of_v
PR: https://github.com/llvm/llvm-project/pull/197494
[clang][deps] Consolidate types into new `DependencyGraph.h` (#197567)
This PR pulls the types forming the dependency graph from three
different headers into a single new header `DependencyGraph.h`. This
makes the code organization a bit clearer, and is NFC otherwise.
[BOLT] Define hugify option in CommandLineOpts.cpp (#197702)
#195272 added a reference to opts::Hugify from LongJmp.cpp. This
broke shared-library builds because LLVMBOLTPasses does not link
against LLVMBOLTRuntimeLibs, where the option was previously defined.
Move the opts::Hugify definition to CommandLineOpts.cpp, alongside
the other global BOLT command-line options. This keeps the option
available to LLVMBOLTPasses through its existing LLVMBOLTUtils
dependency without adding a dependency on the runtime library layer.
[PowerPC][GlobalISel] Remove dependency on legal ruleset (#197375)
This fills in always legal rules, to remove the dependency on the legacy
ruleset. This is not guaranteed to be all the rules, just the ones that
appear in tests.
[clang] NFC: add asserts and fixes for enforcing template parameters have valid positions (#197598)
Some tests are violating these assertions, so they are commented out.
For the test in `clang/test/SemaTemplate/concepts.cpp`, that was broken
by #195995 and needs a partial revert at least.
boot: Replace occurrences of qualified name with full path
In many parts of this chapter the use of "qualified name" and
"unqualified name" was used to refer to a full path to a file (or just
the filename). This terminology is used more in networking terms (i.e.
fully qualified hostname) and is strange to use when referring to files
and directories in a filesystem. It leads to confusion for the reader,
which is why I replaced it throughout the chapter with the more commonly
used term "full path" where appropriate.
While here, remove some whitespaces at the end of sentences.
PR: 292300
[ARM][GlobalISel] Remove dependency on legal ruleset. (#197370)
This fills in always legal rules, to remove the dependency on the legacy
ruleset. The trunc rule might make some differences but it looks like
i64 zext / sext are not well supported at the moment. This is not
guaranteed to be all the rules, just the ones that appear in tests.