dblaikie added inline comments.

================
Comment at: llvm/include/llvm/ADT/SmallVector.h:53
+  // The maximum size depends on size_type used.
+  size_t SizeMax() { return size_type(-1ULL); }
 
----------------
dblaikie wrote:
> I'd probably use numeric_limits here & make this static constexpr
Making it a constexpr /variable/ gets a bit more complicated - do you happen to 
know off-hand whether this requires a separate/out-of-line definition if it's 
ODR used (ah, seems it does - in C++14 which LLVM Uses, in 17 ("A constexpr 
specifier used in a function or static member variable (since C++17) 
declaration implies inline.") it would be OK)

I think it's best not to leave a trap that might catch someone up in the future 
if SizeMax ends up getting ODR used (eg: in a call to std::less, rather than an 
explicit op<, etc) & then the lack of definition would lead to linking failure, 
etc. So best to leave it as a static constexpr function rather than static 
constexpr variable.


================
Comment at: llvm/lib/Support/SmallVector.cpp:40-47
+// Check that SmallVector with 1 byte elements takes extra space due to using
+// uintptr_r instead of uint32_t for size and capacity.
+static_assert(sizeof(SmallVector<char, 4>) > sizeof(SmallVector<uint32_t, 1>) 
||
+                  sizeof(uintptr_t) == sizeof(uint32_t),
+              "1 byte elements should cause larger size and capacity type");
+static_assert(sizeof(SmallVector<uint32_t, 2>) ==
+                  sizeof(SmallVector<int64_t, 1>),
----------------
I think it's probably best to assert the size more like the above (but using 
zero-sized inline buffer), rather than using relative sizes - seems like it'd 
be more readable to me at least. Maybe @dexonsmith has a perspective here.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D77621/new/

https://reviews.llvm.org/D77621



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to