| Commit message (Collapse) | Author | Age |
|
|
|
|
| |
PiperOrigin-RevId: 608705933
Change-Id: I9c11d8d8b3d9057bdf215863210f450332cf56cb
|
|
|
|
|
| |
PiperOrigin-RevId: 608661989
Change-Id: Ibfd94f8b2d23fd232bf93904ed68e11a400b3644
|
|
|
|
|
|
|
| |
This often indicates a bug from adding synchronization logic but not using it.
PiperOrigin-RevId: 608600311
Change-Id: I48bc3ae18b1e9a00b5e2152f33b486cd6be324a1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Imported from GitHub PR https://github.com/abseil/abseil-cpp/pull/1625
Trivial relocatability also requires that the type not do anything weird with its assignment operator; update the type-trait to reflect this. (This is the definition used by BSL, Folly, HPX, Thrust, Parlay, Amadeus, and P1144.)
This is important if we want to use `absl::is_trivially_relocatable` as a gate for memcpy optimizations in `inlined_vector::erase` and/or `inlined_vector::swap`, because in those cases relocation is used to replace part of a sequence involving assignment; the optimization requires an assignment operator that behaves value-semantically.
Clang's builtin currently fails to check the assignment operator, so we stop using it entirely for now. We already refused to use it on Win32, Win64, and Apple, for various unrelated reasons. I'm working on giving Clang's builtin the behavior that would let us re-enable it here.
Assume that any compiler providing both `__cpp_impl_trivially_relocatable` and a builtin `__is_trivially_relocatable(T)` will use the appropriate (P1144) definition for its builtin. Right now there's only one such compiler (the P1144 reference implementation, which forks Clang), so this is largely a moot point, but I'm being optimistic.
Merge d943abdbabc1b7080aa5f0a2fff3e724135164dc into 34604d5b1f6ae14c65b3992478b59f7108051979
Merging this change closes #1625
COPYBARA_INTEGRATE_REVIEW=https://github.com/abseil/abseil-cpp/pull/1625 from Quuxplusone:trivially-relocatable d943abdbabc1b7080aa5f0a2fff3e724135164dc
PiperOrigin-RevId: 607977323
Change-Id: I6436a60326c6d1064bdd71ec2e15b86b7a29efd4
|
|
|
|
|
|
|
|
| |
It can be used instead of `MaskEmptyOrDeleted` in case of inserting to empty table.
`MaskNonFull` requires less operations, in particular it eliminates `_mm_set1_epi8` and `_mm_cmpgt_epi8` operations.
PiperOrigin-RevId: 607587394
Change-Id: Ia48f922d1ca6de38cc91e7ab0d608c45f8f2c446
|
|
|
|
|
|
|
|
|
| |
substitutions
These were described in https://github.com/itanium-cxx-abi/cxx-abi/pull/85 and implemented by LLVM.
PiperOrigin-RevId: 607555558
Change-Id: I9991ac88c1fcf63b25b93d93977a83ca343cdb5d
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Imported from GitHub PR https://github.com/abseil/abseil-cpp/pull/1617
The intrinsics used aren't available on `x86_64` processors while running in 32-bit mode. See:
- list of 64-bit intrinsics (https://learn.microsoft.com/en-us/cpp/intrinsics/x64-amd64-intrinsics-list?view=msvc-170)
- list of 32-bit intrinsics (https://learn.microsoft.com/en-us/cpp/intrinsics/x86-intrinsics-list?view=msvc-170)
- list of predefined MSVC macros (https://learn.microsoft.com/en-us/cpp/preprocessor/predefined-macros?view=msvc-170)
The error message in question:
```console
F:\dev\opentrack-depends\onnxruntime-build\msvc\_deps\abseil_cpp-src\absl/crc/internal/crc32_x86_arm_combined_simd.h(145,32): error C3861: '_mm_crc32_u64': identifier not found
return static_cast<uint32_t>(_mm_crc32_u64(crc, v));
^
F:\dev\opentrack-depends\onnxruntime-build\msvc\_deps\abseil_cpp-src\absl/crc/internal/crc32_x86_arm_combined_simd.h(193,50): error C3861: '_mm_cvtsi128_si64': identifier not found
inline int64_t V128_Low64(const V128 l) { return _mm_cvtsi128_si64(l); }
```
Merge 06f5832108a2b01e0a900db51e1c870f7069a1f2 into 797501d12ea767dabdc8d36674e083869e62ee7d
Merging this change closes #1617
COPYBARA_INTEGRATE_REVIEW=https://github.com/abseil/abseil-cpp/pull/1617 from sthalik:pr/fix-msvc-32-bit-avx 06f5832108a2b01e0a900db51e1c870f7069a1f2
PiperOrigin-RevId: 607483370
Change-Id: Id2a6f6dd33c2707fe7ffe134e7335916f3fb9da3
|
|
|
|
|
| |
PiperOrigin-RevId: 607095897
Change-Id: I077857f0b4c5cf8bbc62bfc8e51a20bb6845296c
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Strings larger than 1 GiB on a platform with a 32-bit size_t could
potentially overflow size_t in `CEscapedLength()`, resulting in an
undersized allocation. The resulting write in
`CEscapeAndAppendInternal()` would then write beyond the bounds of the
output buffer.
A second overflow, where the calculated escaped length is added to the
size of the string being appended to, is also fixed.
In both cases the program will now abort prior to the overflow.
Credit goes to Ronald Crane (Zippenhop LLC) for reporting this issue.
PiperOrigin-RevId: 607019573
Change-Id: I97bf246cde96102a793d2db49446cccae08abf59
|
|
|
|
|
|
|
| |
The optional single template argument for built-in types is not documented in LLVM's comments that list the grammar, but it is [intentionally implemented](https://github.com/llvm/llvm-project/commit/4bc4d51c18d5c087dfbdad1753c84bba8dbf3be0).
PiperOrigin-RevId: 606843797
Change-Id: Ib5ef1983812e9ea68a39fe64b87b6ad6ce81b93c
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Imported from GitHub PR https://github.com/abseil/abseil-cpp/pull/1412
In Clang, an `-Xarch_` compiler flag indicates that its successor only applies to the specified platform (e.g., `-Xarch_x86_64 -maes`). This is used in `absl/copts/AbseilConfigureCopts.cmake` to selectively enable hardware AES support on Apple platforms.
However, when generating pkg-config files, those `-m` flags are filtered out, while the `-Xarch_` flags that precede them are left untouched. This led to the error reported in #1408.
Fix that by filtering out each `-Xarch_` flag with its successor at once.
Fixes #1408.
Merge 89d20ab816b7cead56f05d5a6bc5146d1c4f4335 into 34604d5b1f6ae14c65b3992478b59f7108051979
Merging this change closes #1412
COPYBARA_INTEGRATE_REVIEW=https://github.com/abseil/abseil-cpp/pull/1412 from ZhongRuoyu:xarch-pkgconfig 89d20ab816b7cead56f05d5a6bc5146d1c4f4335
PiperOrigin-RevId: 606730193
Change-Id: I3e177a56721acd3145fd03c64102741898afd2a5
|
|
|
|
|
|
|
|
| |
This function copies the parser's state onto the stack in order to perform backtracking.
Adding a complexity guard will ensure that it fails gracefully, instead of contributing to excessive consumption of stack space.
PiperOrigin-RevId: 606720511
Change-Id: I2f6f03e5f8bc4cc571a4159ecfc2af6f3e00fa68
|
|
|
|
|
|
| |
absl::kuint128max should be replaced with absl::Uint128Max()
PiperOrigin-RevId: 606279299
Change-Id: Ib67b5431f14891f56bb706e62f183d0de75d335f
|
|
|
|
|
|
|
|
|
|
| |
This allows us to annotate nontrivial types that should be flagged as unused
variables. Compilers otherwise ignore nontrivial variables as their
constructors/destructors may be desired and intentional (for example, a scoped
lock).
PiperOrigin-RevId: 606266618
Change-Id: I64b5f6d32a3cec2f18e0aa9029905f5e836c11a9
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
return type
For example, this covers the following:
```
template <typename T>
requires std::integral<T>
int foo();
```
Refactor parsing of `Q <requires-clause expr>` into a single function that performs backtracking to avoid reimplementing `ParseTemplateArgs` in terms of nested if-else blocks.
PiperOrigin-RevId: 605785418
Change-Id: I118998a75e050dcf46af125b613b690312fd3cbe
|
|
|
|
|
|
|
|
| |
The Apple implementation gives false positives starting with
Xcode 15.
PiperOrigin-RevId: 605726702
Change-Id: I2e5e574eca08071d24e97304f005cf9c78230913
|
|
|
|
|
|
|
| |
These clauses show up in other places that end up mangled as parts of function signatures (e.g. on template struct params). We'll handle those in a follow-up.
PiperOrigin-RevId: 605694497
Change-Id: I1bfe4c0cfaa739fdd24548b1547482410c92b5a7
|
|
|
|
|
| |
PiperOrigin-RevId: 605460827
Change-Id: I57007a7ad18829e7bfed27ba65871afbd227d012
|
|
|
|
|
|
|
|
|
| |
with `requires` expressions
Support for `requires` expressions will be added in a follow-up.
PiperOrigin-RevId: 605418370
Change-Id: I2c84cdf0c4599e36683b3c94dcbb173ab4fc3ee8
|
|
|
|
|
|
|
|
|
| |
This macro is used by a Google-internal service for automated
refactoring. It is being released so that Google projects that
use this service can also open-source their code that uses it.
PiperOrigin-RevId: 605322286
Change-Id: I16babcc56c454e07461690a8bb58be5da72d283f
|
|
|
|
|
|
|
| |
as_mutable_bytes().
PiperOrigin-RevId: 605288522
Change-Id: Id16ad96b9323c71bd60801a6c8c359f7ff3d320e
|
|
|
|
|
|
|
| |
go/ranked-overloads
PiperOrigin-RevId: 605125821
Change-Id: I2ee260eaf283acafd80abfd2b7419a0e9f597a78
|
|
|
|
|
|
|
| |
`IterateOverFullSlots` for iterating for all tables.
PiperOrigin-RevId: 605116090
Change-Id: Ia65c664421f7630225b00f1c45c636b4681121ce
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Throughput of the 64 byte chunk loop inside `LowLevelHash` (or now in `LowLevelHashLenGt16`) gets limited by the loop carried dependency on `current_state`. By using 4 states instead of 2, we can reduce this duration by 1 cycle. On Skylake, it is reduced from 9 cycles to 8 cycles (12.5% faster asymptotically).
To see the reduction in a simplified version of `LowLevelHash` implementation on Skylake:
* Before: https://godbolt.org/z/Tcj9vsGax, llvm-mca (https://godbolt.org/z/3o78Msr63) shows 9 cycles / iteration.
* After: https://godbolt.org/z/q4GM4EjPr, llvm-mca (https://godbolt.org/z/W5d1KEMzq) shows 8 cycles / iteration.
* This CL is removing 1 xor (1 cycle) per iteration from the critical path.
A block for 32 byte chunk is also added.
Finally, just before returning, `Mix` is called 1 time instead of twice.
PiperOrigin-RevId: 605090653
Change-Id: Ib7517ebb8bef7484066cd14cf41a943953e93377
|
|
|
|
|
| |
PiperOrigin-RevId: 605030710
Change-Id: Id273d0ff79ebff4f753a4ca9818e2b53661d6fee
|
|
|
|
|
|
|
| |
`char_traits<>` implementation, recently removed from `libc++`.
PiperOrigin-RevId: 605023824
Change-Id: Ia708c91c24625afc4504fa77e959f8ed1e025589
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
SwissTable provides support for heterogeneous lookup in associative
containers through transparent Hash and Eq types. However, it is not
possible for user types to provide additional specializations to allow
their types to use this functionality.
This CL brings ability for user types to specify their own transparent
absl_container_hash and (optionally) absl_container_eq inner types to
achieve the same functionality.
PiperOrigin-RevId: 604994859
Change-Id: I302486d292c9a18b7d4c77033227008f5539e354
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
C++20 introduced constraints, where concepts such as `std::integral` can be used to restrict template parameters:
```
template <std::integral T>
int foo(T t); // Only accepts integral types.
```
Clang mangles these starting with a prefix `Tk`, followed by the concept name, which mangles as a type.
For example, compare `foo` and `bar` here: https://godbolt.org/z/Kzbrrchde
Note that this implementation doesn't cover the more complex case where the concept is templated too. See [llvm's implementation](https://github.com/llvm/llvm-project/commit/4b163e343cfa54c8d55c9da73c70d58f55ea9df2) and its tests for a thorough version.
PiperOrigin-RevId: 604976260
Change-Id: Ic116c5f6f27c3f7714638bdee8de11dce871f0be
|
|
|
|
|
|
|
| |
in 146169f9ad357635b9cd988f976b38bcf83476e3) with fix.
PiperOrigin-RevId: 604534265
Change-Id: Ic70ae72d4d73ac8849196cb844c8de32790bd6c8
|
|
|
|
|
|
|
|
|
|
|
|
| |
to validate that the input was actually valid hexadecimal data.
Mark the version of absl::HexStringToBytes() that does not validate
the input as deprecated.
Fixes #141
PiperOrigin-RevId: 604495678
Change-Id: Iac3020c33c9dbc6d8e31a43b746783fb345edaa7
|
|
|
|
|
| |
PiperOrigin-RevId: 604369517
Change-Id: I6024a8828563c5a2487ba85ede91a88d7059f9c8
|
|
|
|
|
| |
PiperOrigin-RevId: 604094890
Change-Id: If5634a15c7ea7c8ef2cc9b6d09636ee7836946d2
|
|
|
|
|
| |
PiperOrigin-RevId: 603816996
Change-Id: Ifc7dc6299e65043697b4a0c6e9e8eef869297ce3
|
|
|
|
|
| |
PiperOrigin-RevId: 603784442
Change-Id: I3d57e5f438b276c984f5d5416889b19e7ddb501a
|
|
|
|
|
| |
PiperOrigin-RevId: 603696164
Change-Id: I876ae0ead5964b626c285c60d9a4b2bbe62e113d
|
|
|
|
|
| |
PiperOrigin-RevId: 603576688
Change-Id: I5e7868de7016d76fb7a44fea93be72ab90f239d3
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
CycleClock::Now utilizes ABSL_INTERNAL_CYCLECLOCK_SHIFT to discourage reliance
on the raw CPU cycle counter values. As a side effect, it discourages
strictly-increasing assumption. Apply the idea to discourage over-reliance on
the precision of absl::Now/absl::GetCurrentTimeNanos.
Programs relying on a very high precision often exhibit portability issues on
machines with a lower cycle counter precision, or worse, race conditions. For
example, Apple M1 emulated x86 RDTSC only guarantees weakly-increasing RDTSC
values.
x86 clock speed is usually measured in GHz and is still precise after we drop 8
least significant bits.
PiperOrigin-RevId: 603493500
Change-Id: Ib1b00075109283f5dbcb39a43fe0ab722351a1e2
|
|
|
|
|
|
|
|
|
|
| |
There are three optimizations here:
1. Early exit in case all slots were destroyed. especially useful for empty tables.
2. MatchFull is used in order to iterate over all full slots.
3. Portable group is used for `MatchFull` in the case of small table.
PiperOrigin-RevId: 603434899
Change-Id: I40bc90d17331d579cfbb1b4e0693f0913e5c38e4
|
|
|
|
|
|
|
| |
`uninitialized`
PiperOrigin-RevId: 603344396
Change-Id: I06721246bf205284843065687378c6d905cbf879
|
|
|
|
|
| |
PiperOrigin-RevId: 603342563
Change-Id: I1cd80103377f457770d5178dad8b56ae459cbd55
|
|
|
|
|
| |
PiperOrigin-RevId: 603148301
Change-Id: Ie2e5702995c9e1ef4d5aaab23bc89a1eb5007a86
|
|
|
|
|
|
|
| |
https://bazel.build/build/style-guide#other-conventions
PiperOrigin-RevId: 603084345
Change-Id: Ibd7c9573d820f88059d12c46ff82d7d322d002ae
|
|
|
|
|
| |
PiperOrigin-RevId: 602974812
Change-Id: Ic35b41e321b9456a8ddd83470ee2eb07c51e3180
|
|
|
|
|
| |
PiperOrigin-RevId: 602864815
Change-Id: I74db20c93f6a7d9046779677cb4a328dc54bae69
|
|
|
|
|
|
|
| |
flat_hash_{*}.
PiperOrigin-RevId: 602813933
Change-Id: I744fe438281755a141b2fd47e54ab9c6c0fad5a3
|
|
|
|
|
|
|
| |
Closes #1536
PiperOrigin-RevId: 602764437
Change-Id: Ia5c20a3874262a2ddb8797f608af17d7e86dd6d6
|
|
|
|
|
|
|
| |
Also updated the return value to reference to clarify non-nullability.
PiperOrigin-RevId: 602730828
Change-Id: Ia36f7fde3cc87ac597ba4f194eebe9ebb90a1a09
|
|
|
|
|
|
|
|
|
|
|
|
| |
When bzlmod is enabled and WORKSPACE.bzlmod exists, the content of
WORKSPACE is ignored. This prevents bzlmod builds from unintentionally
depending on the WORKSPACE file.
This exposed some small problems with our clang-cl configuration,
which are also fixed in this change.
PiperOrigin-RevId: 602511311
Change-Id: I0ba411edde2df0e17f4eeede4117ddb6934dd8f8
|
|
|
|
|
| |
PiperOrigin-RevId: 602485199
Change-Id: I5cc10eb8dcfe5988cf939080a224522e02ad8607
|
|
|
|
|
|
|
| |
AbslHash allows for piecewise chunks to be streamed incrementally into hash states and requires them to hash identically to one giant stream. The exact size window for this is an internal details `PiecewiseChunkSize`. There was an off by one error in this code. Add tests and fix it.
PiperOrigin-RevId: 602463183
Change-Id: I159bbb5e7e745f55b2fe6eaf0d2735bd0a08aca9
|