rsmith added a comment.

In D76096#1921842 <https://reviews.llvm.org/D76096#1921842>, @nickdesaulniers 
wrote:

> > The performance implications of deleting those lines is the complicated 
> > part.
>
> Where does compile time performance suffer from this? I guess if we have 
> massive array initializers, or large struct definitions, or deeply nested 
> struct definitions, it might take time to recursively evaluate if all members 
> are constant expressions; but isn't that what I want as a developer, to 
> offload the calculations to compile time rather than runtime?  Or is the cost 
> way too significant?


It's exactly what you suspect: very large global arrays initialized from 
constant data. For those, it's substantially more efficient for CodeGen to walk 
the AST representation (the `InitListExpr`) and directly generate an IR 
constant than it is to create an `APValue` representation of the array. 
(`APValue` is not especially space-efficient, and the extra copying and data 
shuffling can be quite slow.) We saw a significant compile time regression on a 
couple of LNT benchmarks without these early bailouts for C.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D76096



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

Reply via email to