| OLD | NEW | 
|    1 Subzero - Fast code generator for PNaCl bitcode |    1 Subzero - Fast code generator for PNaCl bitcode | 
|    2 =============================================== |    2 =============================================== | 
|    3  |    3  | 
|    4 Design |    4 Design | 
|    5 ------ |    5 ------ | 
|    6  |    6  | 
|    7 See the accompanying DESIGN.rst file for a more detailed technical overview of |    7 See the accompanying DESIGN.rst file for a more detailed technical overview of | 
|    8 Subzero. |    8 Subzero. | 
|    9  |    9  | 
|   10 Building |   10 Building | 
| (...skipping 26 matching lines...) Expand all  Loading... | 
|   37  |   37  | 
|   38 ``DEBUG=1`` builds without optimizations and is good when running the translator |   38 ``DEBUG=1`` builds without optimizations and is good when running the translator | 
|   39 inside a debugger.  ``NOASSERT=1`` disables assertions and is the preferred |   39 inside a debugger.  ``NOASSERT=1`` disables assertions and is the preferred | 
|   40 configuration for performance testing the translator.  ``MINIMAL=1`` attempts to |   40 configuration for performance testing the translator.  ``MINIMAL=1`` attempts to | 
|   41 minimize the size of the translator by compiling out everything unnecessary. |   41 minimize the size of the translator by compiling out everything unnecessary. | 
|   42 ``ASAN=1`` enables AddressSanitizer, and ``TSAN=1`` enables ThreadSanitizer. |   42 ``ASAN=1`` enables AddressSanitizer, and ``TSAN=1`` enables ThreadSanitizer. | 
|   43  |   43  | 
|   44 The result of the ``make`` command is the target ``pnacl-sz`` in the current |   44 The result of the ``make`` command is the target ``pnacl-sz`` in the current | 
|   45 directory. |   45 directory. | 
|   46  |   46  | 
 |   47 Building within LLVM trunk | 
 |   48 -------------------------- | 
 |   49  | 
 |   50 Subzero can also be built from within a standard LLVM trunk checkout.  Here is | 
 |   51 an example of how it can be checked out and built:: | 
 |   52  | 
 |   53     mkdir llvm-git | 
 |   54     cd llvm-git | 
 |   55     git clone http://llvm.org/git/llvm.git | 
 |   56     cd llvm/projects/ | 
 |   57     git clone https://chromium.googlesource.com/native_client/pnacl-subzero | 
 |   58     cd ../.. | 
 |   59     mkdir build | 
 |   60     cd build | 
 |   61     cmake -G Ninja ../llvm/ | 
 |   62     ninja | 
 |   63     ./bin/pnacl-sz -version | 
 |   64  | 
 |   65 This creates a default build of ``pnacl-sz``; currently any options such as | 
 |   66 ``DEBUG=1`` or ``MINIMAL=1`` have to be added manually. | 
 |   67  | 
|   47 ``pnacl-sz`` |   68 ``pnacl-sz`` | 
|   48 ------------ |   69 ------------ | 
|   49  |   70  | 
|   50 The ``pnacl-sz`` program parses a pexe or an LLVM bitcode file and translates it |   71 The ``pnacl-sz`` program parses a pexe or an LLVM bitcode file and translates it | 
|   51 into ICE (Subzero's intermediate representation).  It then invokes the ICE |   72 into ICE (Subzero's intermediate representation).  It then invokes the ICE | 
|   52 translate method to lower it to target-specific machine code, optionally dumping |   73 translate method to lower it to target-specific machine code, optionally dumping | 
|   53 the intermediate representation at various stages of the translation. |   74 the intermediate representation at various stages of the translation. | 
|   54  |   75  | 
|   55 The program can be run as follows:: |   76 The program can be run as follows:: | 
|   56  |   77  | 
| (...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  183  |  204  | 
|  184 * Global, linear-scan register allocation. |  205 * Global, linear-scan register allocation. | 
|  185  |  206  | 
|  186 * Advanced phi lowering after target lowering and global register allocation, |  207 * Advanced phi lowering after target lowering and global register allocation, | 
|  187   via edge splitting, topological sorting of the parallel moves, and final local |  208   via edge splitting, topological sorting of the parallel moves, and final local | 
|  188   register allocation. |  209   register allocation. | 
|  189  |  210  | 
|  190 * Stack slot coalescing to reduce frame size. |  211 * Stack slot coalescing to reduce frame size. | 
|  191  |  212  | 
|  192 * Branch optimization to reduce the number of branches to the following block. |  213 * Branch optimization to reduce the number of branches to the following block. | 
| OLD | NEW |