| # How do I ? |
| |
| This is a how-to guide for the user-interface presented by [Compiler Explorer](https://godbolt.org). |
| This doesn't cover the details of how to set up or modify Compiler Explorer for your own needs. |
| For that, please check the documents which already cover topics like: |
| * [Adding a language](AddingALanguage.md) |
| * [Adding a compiler](AddingACompiler.md) |
| * [Adding a library](AddingALibrary.md) |
| * [Adding a tool](AddingATool.md) |
| * and many more at [compiler-explorer/docs](https://github.com/compiler-explorer/compiler-explorer/tree/main/docs) |
| |
| Fast links: |
| - [How do I ?](#how-do-i-) |
| - [Change the assembly syntax from Intel](#change-the-assembly-syntax-from-intel) |
| - [Compare the time taken by compilation and networking](#compare-the-time-taken-by-compilation-and-networking) |
| - [View intermediate information provided by the compilers](#view-intermediate-information-provided-by-the-compilers) |
| |
| ## Change the assembly syntax from Intel |
| ![Output, intel and at&t](./images/asm_info.png) |
| |
| The option to switch assembly from Intel to AT&T syntax is present in the `Output` option of each compiler. |
| If enough space is not present, the option also presents itself as the gear symbol (⚙) |
| |
| ## Compare the time taken by compilation and networking |
| ![Brief overview of UI](./images/brief_overview.png) |
| |
| This is the symbol that looks like a bar graph (📊). If your compilations are taking long, you can use this to check the time taken by: |
| * Networking, JavaScript, waiting for events, etc. |
| * Checking the cache and retrieving from it on a cache-hit |
| * Compilation (on force compilation or cache-miss) |
| * Parsing the generated assembly before presenting it |
| |
| ## View intermediate information provided by the compilers |
| ![Options for GCC](./images/add_new_gcc.png) |
| ![Options for Clang](./images/add_new_clang.png) |
| |
| Though both GCC and Clang create supplementary outputs along with assembly (shown by default), |
| and an executable (created if an executor has been added), the exact nature of the outputs and their formats differ between the compilers. |
| |
| GCC allows the Tree, IPA, RTL and graph outputs, while Clang allows optimization, AST, IR and graph outputs. |
| Some outputs (e.g. RTL or graph) also have a rich set of options in the UI to enable focussing on a particular function or compiler stage. |