[llvm-commits] CVS: llvm/docs/BytecodeFormat.html

Reid Spencer reid at x10sys.com
Tue Aug 17 00:43:53 PDT 2004



Changes in directory llvm/docs:

BytecodeFormat.html updated: 1.26 -> 1.27
---
Log message:

Documented the removal of alignment in version 4 bytecode files (version 3
was released with LLVM 1.3). Alignment of fields can add severe size to 
certain kinds of functions (those with lots of long format instructions) so
we decided to do away with alignment altogether in this bc version.


---
Diffs of the changes:  (+29 -1)

Index: llvm/docs/BytecodeFormat.html
diff -u llvm/docs/BytecodeFormat.html:1.26 llvm/docs/BytecodeFormat.html:1.27
--- llvm/docs/BytecodeFormat.html:1.26	Mon Aug 16 19:49:03 2004
+++ llvm/docs/BytecodeFormat.html	Tue Aug 17 02:43:43 2004
@@ -1556,6 +1556,34 @@
 </p>
 </div>
 <!-- _______________________________________________________________________ -->
+<div class="doc_subsection"><a name="vers12">Version 1.3 Differences From 
+    1.4</a></div>
+<!-- _______________________________________________________________________ -->
+<div class="doc_subsubsection">Aligned Data</div>
+<div class="doc_text">
+  <p>In version 1.3, certain data items were aligned to 32-bit boundaries. In
+  version 1.4, alignment of data was done away with completely. The need for
+  alignment has gone away and the only thing it adds is bytecode file size
+  overhead. In most cases this overhead was small. However, in functions with
+  large numbers of format 0 instructions (GEPs and PHIs with lots of parameters)
+  or regular instructions with large valued operands (e.g. because there's just
+  a lot of instructions in the function) the overhead can be extreme. In one
+  test case, the overhead was 44,000 bytes (34% of the total file size).
+  Consequently in release 1.4, the decision was made to eliminate alignment
+  altogether.</p>
+  <p>In version 1.3 format, the following bytecode constructs were aligned (i.e.
+  they were followed by one to three bytes of padding):</p>
+  <ul>
+    <li>All blocks.</li>
+    <li>Instructions using the long format (format 0).</li>
+    <li>All call instructions that called a var args function.</li>
+    <li>The target triple (a string field at the end of the module block).</li>
+    <li>The version field (immediately following the signature).</li>
+  </ul>
+  <p>None of these constructs are aligned in version 1.4</p>
+</div>
+
+<!-- _______________________________________________________________________ -->
 <div class="doc_subsection"><a name="vers12">Version 1.2 Differences
 From 1.3</a></div>
 <!-- _______________________________________________________________________ -->
@@ -1656,7 +1684,7 @@
 <a href="mailto:rspencer at x10sys.com">Reid Spencer</a> and <a
  href="mailto:sabre at nondot.org">Chris Lattner</a><br>
 <a href="http://llvm.cs.uiuc.edu">The LLVM Compiler Infrastructure</a><br>
-Last modified: $Date: 2004/08/17 00:49:03 $
+Last modified: $Date: 2004/08/17 07:43:43 $
 </address>
 <!-- vim: sw=2
 -->






More information about the llvm-commits mailing list