diff options
author | Abseil Team <absl-team@google.com> | 2022-11-09 10:59:02 -0800 |
---|---|---|
committer | Copybara-Service <copybara-worker@google.com> | 2022-11-09 11:00:09 -0800 |
commit | 66bfca85c825a0c53254fa7f7787784099395d69 (patch) | |
tree | 3f53016a11f81669bc504143c5068e1bc3102a2e /absl/container/inlined_vector.h | |
parent | 64f00b1f4a064e9e140fc4642ccd55c9c2e2e365 (diff) | |
download | abseil-66bfca85c825a0c53254fa7f7787784099395d69.tar.gz abseil-66bfca85c825a0c53254fa7f7787784099395d69.tar.bz2 abseil-66bfca85c825a0c53254fa7f7787784099395d69.zip |
Auto increase inlined capacity whenever it does not affect class' size.
PiperOrigin-RevId: 487292771
Change-Id: I2454e28fe91017fb2954a4ad194712fcafe893d2
Diffstat (limited to 'absl/container/inlined_vector.h')
-rw-r--r-- | absl/container/inlined_vector.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/absl/container/inlined_vector.h b/absl/container/inlined_vector.h index 15616001..7058f375 100644 --- a/absl/container/inlined_vector.h +++ b/absl/container/inlined_vector.h @@ -661,10 +661,22 @@ class InlinedVector { ABSL_HARDENING_ASSERT(pos <= end()); value_type dealias(std::forward<Args>(args)...); + // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102329#c2 + // It appears that GCC thinks that since `pos` is a const pointer and may + // point to uninitialized memory at this point, a warning should be + // issued. But `pos` is actually only used to compute an array index to + // write to. +#if !defined(__clang__) && defined(__GNUC__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wmaybe-uninitialized" +#endif return storage_.Insert(pos, IteratorValueAdapter<A, MoveIterator<A>>( MoveIterator<A>(std::addressof(dealias))), 1); +#if !defined(__clang__) && defined(__GNUC__) +#pragma GCC diagnostic pop +#endif } // `InlinedVector::emplace_back(...)` |