diff --git a/docs/BytecodeFormat.html b/docs/BytecodeFormat.html index 226cd9638be..b204c837695 100644 --- a/docs/BytecodeFormat.html +++ b/docs/BytecodeFormat.html @@ -1555,6 +1555,34 @@ section here describes the differences between that version and the one that follows.
+ + + +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.
+In version 1.3 format, the following bytecode constructs were aligned (i.e. + they were followed by one to three bytes of padding):
+None of these constructs are aligned in version 1.4
+