File tree Expand file tree Collapse file tree 1 file changed +14
-3
lines changed Expand file tree Collapse file tree 1 file changed +14
-3
lines changed Original file line number Diff line number Diff line change @@ -579,12 +579,23 @@ <h3>
579
579
580
580
</ p >
581
581
582
- < p > SROA - We've re-written SROA to be significantly more powerful.
583
- <!-- FIXME: Add more text here... --> </ p >
582
+ < p > SROA - We’ve re-written SROA to be significantly more powerful and generate
583
+ code which is much more friendly to the rest of the optimization pipeline.
584
+ Previously this pass had scaling problems that required it to only operate on
585
+ relatively small aggregates, and at times it would mistakenly replace a large
586
+ aggregate with a single very large integer in order to make it a scalar SSA
587
+ value. The result was a large number of i1024 and i2048 values representing any
588
+ small stack buffer. These in turn slowed down many subsequent optimization
589
+ paths.</ p >
590
+ < p > The new SROA pass uses a different algorithm that allows it to only promote to
591
+ scalars the pieces of the aggregate actively in use. Because of this it doesn’t
592
+ require any thresholds. It also always deduces the scalar values from the uses
593
+ of the aggregate rather than the specific LLVM type of the aggregate. These
594
+ features combine to both optimize more code with the pass but to improve the
595
+ compile time of many functions dramatically.</ p >
584
596
585
597
< ul >
586
598
< li > Branch weight metadata is preseved through more of the optimizer.</ li >
587
- < li > ...</ li >
588
599
</ ul >
589
600
590
601
</ div >
You can’t perform that action at this time.
0 commit comments