[libc++][NFC] Simplify `optional<T>` and `optional<T&>` a bit (#203665)
- Make `optional<T&>`'s iterator base directly from the storage base
instead of inheriting the empty bases, allowing us to remove the
`is_lvalue_reference_v` conditions in the empty bases
- Move the `__is_constructible_for_optional_{meow}` variables closer to
`make_optional` since that's the only place they're really useful for
now
- Change the SFINAE for the iterator availability to use concepts
instead
The above should make it easier to split up in an upcoming patch.
(devel/R-devtools) Updated 2.4.5 tol 2.5.2, Fix build againt R 4.6.0 is too deep, sorry
# devtools 2.5.2
* `install()` uses a new feature of `pak::local_install_deps()` to
consider the current `.libPaths()` when resolving dependencies,
instead of consulting only `.libPaths()[1]`. This was an unintended
behavioral change introduced in 2.5.0 (#2691).
# devtools 2.5.1
* `build_readme()` no longer installs dependencies into the temporary library
(a regression introduced in 2.5.0). It now exits early if a required
dependency is missing and reports any that are out of date or at a dev
version (#2683).
* `dev_sitrep()` reports if devtools itself is out of date (#2687).
# devtools 2.5.0
[75 lines not shown]
(devel/R-pkgbuild) Updated 1.4.6 to 1.4.8
# pkgbuild 1.4.8
* New `Config/build/never-clean` `DESCRIPTION` option to avoid adding
`--preclean` to `R CMD INSTALL` (e.g., when header files have changed)
(@krlmlr, #204).
* `has_rtools()` & co. now work correctly on aarch64 Windows, when
`RTOOLS45_AARCH64_HOME` is not set (@remlapmot, #203).
* `pkg_build()` and `pkgbuild_process` now work corrently when building
binary packages from non-standard file names (#208).
# pkgbuild 1.4.7
* pkgbuild now supports R 4.5.x and Rtools45.
* `has_build_tools()` (and related functions) now do not explicitly check
[2 lines not shown]
[llvm-cov] Fix undercounting lines wrapped by gap regions
Lines with no region entry that are wrapped by a gap region were
reported with the gap's count (often 0), even when non-gap segments
on the line indicated the line was actually executed. This caused
llvm-cov to undercount coverage for lines that continue a covered
region after a gap (e.g., closing braces, simple statements following
an if/else).
Check for non-gap segments with HasCount on such lines and use their
max count instead of the gap region's count.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply at anthropic.com>
[llubi] Add support for exposed provenance (#200596)
This patch implements the semantics of exposed provenance, as described
in [nikic's RFC draft](https://hackmd.io/@nikic/SJBt4mFCll) and
[Miri](https://doc.rust-lang.org/beta/nightly-rustc/miri/enum.Provenance.html).
The provenance of an inttoptr is marked as "wildcard", which picks one
from previously exposed provenances each time a memory access is
performed. For angelic non-determinism, a snapshot of the exposed
provenance set is recorded when inttoptr executes. When a memory access
is performed, all invalid provenances are masked out. If we fail to pick
one, it is UB.
Since all memory objects in llubi are non-overlapping (i.e., there is at
most one memory object satisfying `Obj->inBounds(Addr)` for each
address), we can determine a unique memory object for a wildcard
provenance when the first memory access is performed.
This matches Miri's behavior. Another variant is to resolve the memory
object when inttoptr executes, which gives a limited provenance set
[14 lines not shown]
[llvm-cov] Fix undercounting lines wrapped by gap regions
Lines with no region entry that are wrapped by a gap region were
reported with the gap's count (often 0), even when non-gap segments
on the line indicated the line was actually executed. This caused
llvm-cov to undercount coverage for lines that continue a covered
region after a gap (e.g., closing braces, simple statements following
an if/else).
Check for non-gap segments with HasCount on such lines and use their
max count instead of the gap region's count.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply at anthropic.com>
[llvm-cov] Add failing test for gap region line coverage bug
LineCoverageStats incorrectly reports lines as uncovered when a gap
region with count=0 wraps into a line that has non-entry segments
with count > 0.
The test uses a minimal reproducer: a scoped block with a never-taken
early return followed by a statement. The closing "}" produces a gap
region that wraps to the next line, suppressing its execution count.
The extra statement after the if-block is required — without it,
clang emits a region entry (MinRegionCount > 0) and the bug doesn't
trigger.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply at anthropic.com>