Reland [C++20] [Modules] Don't profiling the callee of CXXFoldExpr (#190732) (#195983)
Close https://github.com/llvm/llvm-project/issues/190333
For the test case, the root cause of the problem is, the compiler
thought the declaration of `operator &&` in consumer.cpp may change the
meaning of '&&' in the requrie clause of `F::operator()`. But it doesn't
make sense. Here we skip profiling the callee to solve the problem. Note
that we've already record the kind of the operator. So '&&' and '||'
won't be confused.
---
See the discussion in https://github.com/llvm/llvm-project/pull/194283
For the new found pattern that we may have other binary operator (e.g.,
operator +) in the require clause, e.g.,
```C++
[8 lines not shown]
[Clang][Sema] Fix crash in __builtin_dump_struct with immediate callables (#192880)
## Motivation
`ComplexRemove` (used by `Sema::PopExpressionEvaluationContext` to strip
nested `ConstantExpr` wrappers) inherits the default
`TreeTransform::TransformOpaqueValueExpr`, which asserts on any
`OpaqueValueExpr` with a non-null `SourceExpr` unless a binding has
already been set up.
`__builtin_dump_struct` binds the record pointer to an `OpaqueValueExpr`
inside a `PseudoObjectExpr`. When the callable argument is
immediate-escalated (e.g. via `__builtin_is_within_lifetime`),
`RemoveNestedImmediateInvocation` roots `ComplexRemove` inside the PSE's
semantic form, reaching that OVE without the binding the assert expects
- triggering a crash.
## Closing Issues
[6 lines not shown]
[CoroSplit] Never collect allocas used by catchpad into frame (#186728)
Windows EH requires exception objects allocated on stack. But there is
no reliable way to identify them. CoroSplit employs a best-effort
algorithm to determine whether allocas persist on the stack or the
frame, which may result in miscompilation when Windows exceptions are
used.
This patch proposes that we treat allocas used by catchpad as exception
objects and never place them on the frame. A verifier check is added to
enforce that operands of catchpad are either constants or allocas.
Close #143235 Close #153949 Close #182584
[VPlan] Fold canonical IV recipe creation into createLoopRegion. (#198383)
Remove the separate addCanonicalIVRecipes transform and create the
canonical IV's increment and the latch's exiting branch directly in
createLoopRegion, using the loop region's VPRegionValue for the
canonical IV. The temporary VPPhi placeholder previously inserted in the
header is no longer needed.
PR: https://github.com/llvm/llvm-project/pull/198383
lang/babashka: New port: Fast native Clojure scripting runtime
Babashka is a native, fast-starting Clojure interpreter for scripting.
It uses GraalVM native-image to produce a self-contained binary that
starts instantly, making Clojure practical for shell scripting and
command-line tools.
This port installs a statically-linked Linux binary that runs via
FreeBSD's Linux binary compatibility layer (Linuxulator).
WWW: https://babashka.org/
[Clang][AMDGPU] Add ``amdgcn_av("none")`` attribute for atomic expressions
Add a statement attribute that suppresses MakeAvailable/MakeVisible
cache operations on AMDGPU atomic instructions while preserving memory
ordering (waits).
The attribute takes a string argument specifying the mode. Currently
"none" is the only supported mode. The resulting atomic or fence
instruction carries !mmra !{!"amdgcn-av", !"none"} metadata.
Assisted-By: Claude Opus 4.6
www/freenginx: fix rc script required_files path
Use %%ETCDIR%%/nginx.conf in the rc script instead of the
obsolete hardcoded %%PREFIX%%/etc/nginx/freenginx.conf path.
The port is configured with:
--prefix=/usr/local/etc/freenginx
--conf-path=/usr/local/etc/freenginx/nginx.conf
The previous required_files setting no longer matched the
actual configuration file location and could prevent the
service from starting after installation or upgrade.
PR: 290461
Sponsored by: Netzkommune GmbH
[IR] Introduce an appendTags() idiom to set MMRA metadata [NFC]
This is a simple set-union of new tags and existing tags. This is safer than
directly setting metadata, which can over-write existing MMRAs.
Assisted-By: Claude Opus 4.6
[AArch64][GlobalISel] Add tablegen pattern for uaddo combine (#198724)
Related to #197693 which filters the worklist to only include opcodes
for which there are combines. It's mostly handled by canMatchOpcode
which is tablgen'ed but some old combines like this one are missing a
tablegen pattern and require extra handling. This adds a simple wrapper
so it gets picked up by canMatchOpcode and we can delete the C++
handling.
Assisted-by: codex
[clang][ASTImporter] Fix of crash at ConstraintSatisfaction import (#197407)
Null pointer dereference could happen during `ASTImporter` import of a
`ConstraintSatisfaction` object.
[GVN] Properly combine AA metadata if available load is hoisted (#197948)
Ensure the AA metadata are properly merged between the new load and the
old one during PRE. Actually set `DoesKMove` in `combineMetadataForCSE`,
otherwise the new load is assumed not to move, which is not correct if
the new load has happened to be hoisted.
Fixes: https://github.com/llvm/llvm-project/issues/196787.
[DenseMap] Invalidate iterators on erase (#199369)
Tighten DenseMap's `erase` contract so that, like `insert` and `grow`,
it invalidates iterators and references obtained before the call.
Under the current tombstone-based deletion this is purely an
LLVM_ENABLE_ABI_BREAKING_CHECKS check — the bucket array is not actually
mutated for other entries — but it surfaces stale-iterator-after-erase
patterns now rather than when DenseMap's deletion scheme changes.
Mirrors the SmallPtrSet change in #96762, which dropped tombstones in
small mode and likewise had `erase` invalidate iterators.
Depends on #198982 and #199365