aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPawel Wodnicki <pawel@32bitmicro.com>2012-12-19 09:57:57 +0000
committerPawel Wodnicki <pawel@32bitmicro.com>2012-12-19 09:57:57 +0000
commiteb8eaa89a589e0a63f4053a401668d1fd916e4cd (patch)
tree8987f03f32b9fe0b0da40a19dde81a62040f9230
parent2691635b5771df4624f4af1a6242020aaaabd9d7 (diff)
Sync-up SROA notes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@170521 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--docs/ReleaseNotes.html17
1 files changed, 14 insertions, 3 deletions
diff --git a/docs/ReleaseNotes.html b/docs/ReleaseNotes.html
index fbcafc3f00..1fc16a36d7 100644
--- a/docs/ReleaseNotes.html
+++ b/docs/ReleaseNotes.html
@@ -579,12 +579,23 @@
</p>
-<p>SROA - We've re-written SROA to be significantly more powerful.
-<!-- FIXME: Add more text here... --></p>
+<p>SROA - We&#8217;ve re-written SROA to be significantly more powerful and generate
+code which is much more friendly to the rest of the optimization pipeline.
+Previously this pass had scaling problems that required it to only operate on
+relatively small aggregates, and at times it would mistakenly replace a large
+aggregate with a single very large integer in order to make it a scalar SSA
+value. The result was a large number of i1024 and i2048 values representing any
+small stack buffer. These in turn slowed down many subsequent optimization
+paths.</p>
+<p>The new SROA pass uses a different algorithm that allows it to only promote to
+scalars the pieces of the aggregate actively in use. Because of this it doesn&#8217;t
+require any thresholds. It also always deduces the scalar values from the uses
+of the aggregate rather than the specific LLVM type of the aggregate. These
+features combine to both optimize more code with the pass but to improve the
+compile time of many functions dramatically.</p>
<ul>
<li>Branch weight metadata is preseved through more of the optimizer.</li>
- <li>...</li>
</ul>
</div>