summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* Import of CCTZ from GitHub.Gravatar Derek Mauro2024-02-20
| | | | | PiperOrigin-RevId: 608705933 Change-Id: I9c11d8d8b3d9057bdf215863210f450332cf56cb
* Performance improvement for absl::AsciiStrToUpper() and absl::AsciiStrToLower()Gravatar Abseil Team2024-02-20
| | | | | PiperOrigin-RevId: 608661989 Change-Id: Ibfd94f8b2d23fd232bf93904ed68e11a400b3644
* Annotate that SpinLock should warn when unused.Gravatar Chris Kennelly2024-02-20
| | | | | | | This often indicates a bug from adding synchronization logic but not using it. PiperOrigin-RevId: 608600311 Change-Id: I48bc3ae18b1e9a00b5e2152f33b486cd6be324a1
* PR #1625: absl::is_trivially_relocatable now respects assignment operatorsGravatar Arthur O'Dwyer2024-02-17
| | | | | | | | | | | | | | | | | | | 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
* Introduce `Group::MaskNonFull` without usage.Gravatar Abseil Team2024-02-15
| | | | | | | | 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
* `demangle`: Parse template template and C++20 lambda template param ↵Gravatar Dino Radakovic2024-02-15
| | | | | | | | | 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
* PR #1617: fix MSVC 32-bit build with -arch:AVXGravatar Stanislaw Halik2024-02-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Minor documentation fix for `absl::StrSplit()`Gravatar Abseil Team2024-02-14
| | | | | PiperOrigin-RevId: 607095897 Change-Id: I077857f0b4c5cf8bbc62bfc8e51a20bb6845296c
* Prevent overflow in `absl::CEscape()`Gravatar Derek Mauro2024-02-14
| | | | | | | | | | | | | | | | | | 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
* `demangle`: Parse optional single template argument for built-in typesGravatar Dino Radakovic2024-02-13
| | | | | | | 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
* PR #1412: Filter out `-Xarch_` flags from pkg-config filesGravatar Ruoyu Zhong2024-02-13
| | | | | | | | | | | | | | | | | | | 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
* `demangle`: Add complexity guard to `ParseQRequiresExpr`Gravatar Dino Radakovic2024-02-13
| | | | | | | | 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
* Remove deprecated symbol absl::kuint128maxGravatar Derek Mauro2024-02-12
| | | | | | absl::kuint128max should be replaced with absl::Uint128Max() PiperOrigin-RevId: 606279299 Change-Id: Ib67b5431f14891f56bb706e62f183d0de75d335f
* Add ABSL_ATTRIBUTE_WARN_UNUSED.Gravatar Chris Kennelly2024-02-12
| | | | | | | | | | 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
* `demangle`: Parse `requires` clauses on template params, before function ↵Gravatar Dino Radakovic2024-02-09
| | | | | | | | | | | | | | | | 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
* On Apple, implement absl::is_trivially_relocatable with the fallback.Gravatar Abseil Team2024-02-09
| | | | | | | | The Apple implementation gives false positives starting with Xcode 15. PiperOrigin-RevId: 605726702 Change-Id: I2e5e574eca08071d24e97304f005cf9c78230913
* `demangle`: Parse `requires` clauses on functionsGravatar Dino Radakovic2024-02-09
| | | | | | | 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
* Make `begin()` to return `end()` on empty tables.Gravatar Abseil Team2024-02-08
| | | | | PiperOrigin-RevId: 605460827 Change-Id: I57007a7ad18829e7bfed27ba65871afbd227d012
* `demangle`: Parse C++20-compatible template param declarations, except those ↵Gravatar Dino Radakovic2024-02-08
| | | | | | | | | with `requires` expressions Support for `requires` expressions will be added in a follow-up. PiperOrigin-RevId: 605418370 Change-Id: I2c84cdf0c4599e36683b3c94dcbb173ab4fc3ee8
* Add the ABSL_DEPRECATE_AND_INLINE() macroGravatar Derek Mauro2024-02-08
| | | | | | | | | 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
* Span: Fixed comment referencing std::span as_writable_bytes() as ↵Gravatar Abseil Team2024-02-08
| | | | | | | as_mutable_bytes(). PiperOrigin-RevId: 605288522 Change-Id: Id16ad96b9323c71bd60801a6c8c359f7ff3d320e
* Switch rank structs to be consistent with written guidance in ↵Gravatar Matt Kulukundis2024-02-07
| | | | | | | go/ranked-overloads PiperOrigin-RevId: 605125821 Change-Id: I2ee260eaf283acafd80abfd2b7419a0e9f597a78
* Avoid hash computation and `Group::Match` in small tables copy and use ↵Gravatar Abseil Team2024-02-07
| | | | | | | `IterateOverFullSlots` for iterating for all tables. PiperOrigin-RevId: 605116090 Change-Id: Ia65c664421f7630225b00f1c45c636b4681121ce
* Optimize `absl::Hash` by making `LowLevelHash` faster.Gravatar Shahriar Rouf2024-02-07
| | | | | | | | | | | | | | | | 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
* Add -Wdead-code-aggressive to ABSL_LLVM_FLAGSGravatar Abseil Team2024-02-07
| | | | | PiperOrigin-RevId: 605030710 Change-Id: Id273d0ff79ebff4f753a4ca9818e2b53661d6fee
* Stop using `std::basic_string<uint8_t>` which relies on a non-standard genericGravatar Bogdan Graur2024-02-07
| | | | | | | `char_traits<>` implementation, recently removed from `libc++`. PiperOrigin-RevId: 605023824 Change-Id: Ia708c91c24625afc4504fa77e959f8ed1e025589
* Add absl_container_hash-based HashEq specializationGravatar Dennis Kormalev2024-02-07
| | | | | | | | | | | | | | 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
* `demangle`: Implement parsing for simplest constrained template argumentsGravatar Dino Radakovic2024-02-07
| | | | | | | | | | | | | | | | | 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
* Roll forward 9d8588bfc4566531c4053b5001e2952308255f44 (which was rolled back ↵Gravatar Abseil Team2024-02-05
| | | | | | | in 146169f9ad357635b9cd988f976b38bcf83476e3) with fix. PiperOrigin-RevId: 604534265 Change-Id: Ic70ae72d4d73ac8849196cb844c8de32790bd6c8
* Add a version of absl::HexStringToBytes() that returns a boolGravatar Derek Mauro2024-02-05
| | | | | | | | | | | | 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
* Enable StringLikeTest in hash_function_defaults_testGravatar Dennis Kormalev2024-02-05
| | | | | PiperOrigin-RevId: 604369517 Change-Id: I6024a8828563c5a2487ba85ede91a88d7059f9c8
* Fix a typo.Gravatar Abseil Team2024-02-04
| | | | | PiperOrigin-RevId: 604094890 Change-Id: If5634a15c7ea7c8ef2cc9b6d09636ee7836946d2
* Minor changes to the BUILD file for absl/synchronizationGravatar Abseil Team2024-02-02
| | | | | PiperOrigin-RevId: 603816996 Change-Id: Ifc7dc6299e65043697b4a0c6e9e8eef869297ce3
* Avoid static initializers in case of ABSL_FLAGS_STRIP_NAMES=1Gravatar Gennadiy Rozental2024-02-02
| | | | | PiperOrigin-RevId: 603784442 Change-Id: I3d57e5f438b276c984f5d5416889b19e7ddb501a
* Rollback 9d8588bfc4566531c4053b5001e2952308255f44 for breaking the buildGravatar Derek Mauro2024-02-02
| | | | | PiperOrigin-RevId: 603696164 Change-Id: I876ae0ead5964b626c285c60d9a4b2bbe62e113d
* No public descriptionGravatar Abseil Team2024-02-01
| | | | | PiperOrigin-RevId: 603576688 Change-Id: I5e7868de7016d76fb7a44fea93be72ab90f239d3
* Decrease the precision of absl::Now in x86-64 debug buildsGravatar Fangrui Song2024-02-01
| | | | | | | | | | | | | | | | | | 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
* Optimize raw_hash_set destructor.Gravatar Abseil Team2024-02-01
| | | | | | | | | | 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
* Add ABSL_ATTRIBUTE_UNINITIALIZED macros for use with clang and GCC's ↵Gravatar Abseil Team2024-02-01
| | | | | | | `uninitialized` PiperOrigin-RevId: 603344396 Change-Id: I06721246bf205284843065687378c6d905cbf879
* Optimize `Cord::Swap()` for missed compiler optimization in clang.Gravatar Martijn Vels2024-02-01
| | | | | PiperOrigin-RevId: 603342563 Change-Id: I1cd80103377f457770d5178dad8b56ae459cbd55
* Type erased hash_slot_fn that depends only on key types (and hash function).Gravatar Abseil Team2024-01-31
| | | | | PiperOrigin-RevId: 603148301 Change-Id: Ie2e5702995c9e1ef4d5aaab23bc89a1eb5007a86
* Replace `testonly = 1` with `testonly = True` in abseil BUILD files.Gravatar Shahriar Rouf2024-01-31
| | | | | | | https://bazel.build/build/style-guide#other-conventions PiperOrigin-RevId: 603084345 Change-Id: Ibd7c9573d820f88059d12c46ff82d7d322d002ae
* Avoid extra `& msbs` on every iteration over the mask for GroupPortableImpl.Gravatar Abseil Team2024-01-31
| | | | | PiperOrigin-RevId: 602974812 Change-Id: Ic35b41e321b9456a8ddd83470ee2eb07c51e3180
* Missing parenthesis.Gravatar Abseil Team2024-01-30
| | | | | PiperOrigin-RevId: 602864815 Change-Id: I74db20c93f6a7d9046779677cb4a328dc54bae69
* Early return from destroy_slots for trivially destructible types in ↵Gravatar Abseil Team2024-01-30
| | | | | | | flat_hash_{*}. PiperOrigin-RevId: 602813933 Change-Id: I744fe438281755a141b2fd47e54ab9c6c0fad5a3
* Avoid export of testonly target absl::test_allocator in CMake buildsGravatar Derek Mauro2024-01-30
| | | | | | | Closes #1536 PiperOrigin-RevId: 602764437 Change-Id: Ia5c20a3874262a2ddb8797f608af17d7e86dd6d6
* Use absl::NoDestructor for cordz global queue.Gravatar Abseil Team2024-01-30
| | | | | | | Also updated the return value to reference to clarify non-nullability. PiperOrigin-RevId: 602730828 Change-Id: Ia36f7fde3cc87ac597ba4f194eebe9ebb90a1a09
* Add empty WORKSPACE.bzlmodGravatar Derek Mauro2024-01-29
| | | | | | | | | | | | 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
* Introduce `RawHashSetLayout` helper class.Gravatar Abseil Team2024-01-29
| | | | | PiperOrigin-RevId: 602485199 Change-Id: I5cc10eb8dcfe5988cf939080a224522e02ad8607
* Fix a corner case in SpyHashState for exact boundaries.Gravatar Matt Kulukundis2024-01-29
| | | | | | | 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