dexonsmith added a comment.

In D77621#1995673 <https://reviews.llvm.org/D77621#1995673>, @browneee wrote:

> Thanks for the revert explanation and notes, nikic.
>
> @dexonsmith what is your current thinking on going back to the original 
> std::vector approach?


SmallVector has only been limited to UINT32_MAX size for about a year and I 
think it’s a pretty major regression that I broke using it for arbitrary char 
buffers.  I don’t think that’s acceptable really.  Note that there was pushback 
when I shrank SmallVector at all for aesthetic reasons.

Note that breaking `SmallVector<char>` also breaks `SmallString` and 
`raw_svector_ostream` for buffers that are sometimes large.  This was certainly 
not the goal of my original commit and I think it’s the wrong result.

One thing to try I suppose is specializing just when `sizeof(T)==1`.  But even 
if there’s still a compile time hit, I think making SmallVector functional is 
more critical.  Use cases that really want something tiny can use 
`TinyPtrVector`; or if that’s not appropriate we can introduce a `TinyVector` 
that works for other types (could make it 8 bytes with small storage for 1 
element if the type is 4 bytes or smaller).

This might be worth a thread on llvm-dev.  Maybe no one else thinks LLVM should 
use `SmallVectorImpl` pervasively in APIs anymore.

(AFAICT `MCRelaxableFragment` has a `SmallVector<MCFixup>` and would not have 
been affected by the reverted commit since `sizeof(MCFixup)` is quite large, 
not sure why that was brought up.)


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