dblaikie added a comment.

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

> I resubmitted the report_fatal_error checks again under D77601 
> <https://reviews.llvm.org/D77601>
>
> http://llvm-compile-time-tracker.com/compare.php?from=7375212172951d2fc283c81d03c1a8588c3280c6&to=a30e7ea88e75568feed020aedae73c52de888835&stat=max-rss
>  
> http://llvm-compile-time-tracker.com/compare.php?from=7375212172951d2fc283c81d03c1a8588c3280c6&to=a30e7ea88e75568feed020aedae73c52de888835&stat=instructions
>
> Imo impact from this part is insignificant.


Ah, OK - thanks for noting that!

@nikic any sense of the noise floor/level on these measurements? It doesn't 
/look/ like there's much left in this that would cause problems. & I assume 
these measurements were made on an optimized build (so we don't have to try to 
improve the unoptimized code?

> Other pieces I see as possibly impacting compile time are:
> 
> 1. This correction to SmallVectorTemplateCommon::max_size().   But 
> SizeTypeMax() is static constexpr, this seems like it could still be 
> optimized to a constant.
> 
>   ```
> 2. size_type max_size() const { return size_type(-1) / sizeof(T); } +  
> size_type max_size() const { +    return std::min(this->SizeTypeMax(), 
> size_type(-1) / sizeof(T)); +  } ```

Perhaps you could move the value computation into a constexpr variable & just 
return that as needed. (could be a static local constexpr, I guess - to avoid 
the issues around linkage of constexpr member variables)

> 2. More function calls. They also appear fairly optimizable to me.
> 
>   I may not have good insight into the actual optimization behavior here.

*nod* Didn't seem especially interesting.

> I don't think the automatic switch of the size/capacity field has been 
> justified well. We have plenty of SmallVectors in LLVM that are, indeed, 
> small. There is no way an MCRelaxableFragment will ever end up storing a 
> single instruction that is 4G large.

@nikic - can you explain the relevance of this ^ (as @dexonsmith pointed out, 
MCRelaxableFragment doesn't look like it would be affected by this change - is 
there something we're missing about that?)

> Similarly, I'm not really convinced about handling this in SmallVector at 
> all. The original change here just used an std::vector in the one place where 
> this has become an issue. That seems like a pretty good solution until there 
> is evidence that this is really a more widespread problem.

I'm inclined to go with @dexonsmith's perspective here, as the author of the 
original change & the general attitude that SmallVector should support this 
kind of use case.


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