<!DOCTYPE HTML>
<html lang="en" class="light sidebar-visible" dir="ltr">
    <head>
        <!-- Book generated using mdBook -->
        <meta charset="UTF-8">
        <title>How to debug - Rust Compiler Development Guide</title>


        <!-- Custom HTML head -->

        <meta name="description" content="A guide to developing the Rust compiler (rustc)">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <meta name="theme-color" content="#ffffff">

        <link rel="icon" href="../favicon.svg">
        <link rel="shortcut icon" href="../favicon.png">
        <link rel="stylesheet" href="../css/variables.css">
        <link rel="stylesheet" href="../css/general.css">
        <link rel="stylesheet" href="../css/chrome.css">
        <link rel="stylesheet" href="../css/print.css" media="print">

        <!-- Fonts -->
        <link rel="stylesheet" href="../FontAwesome/css/font-awesome.css">
        <link rel="stylesheet" href="../fonts/fonts.css">

        <!-- Highlight.js Stylesheets -->
        <link rel="stylesheet" id="highlight-css" href="../highlight.css">
        <link rel="stylesheet" id="tomorrow-night-css" href="../tomorrow-night.css">
        <link rel="stylesheet" id="ayu-highlight-css" href="../ayu-highlight.css">

        <!-- Custom theme stylesheets -->
        <link rel="stylesheet" href="../pagetoc.css">


        <!-- Provide site root and default themes to javascript -->
        <script>
            const path_to_root = "../";
            const default_light_theme = "light";
            const default_dark_theme = "navy";
            window.path_to_searchindex_js = "../searchindex.js";
        </script>
        <!-- Start loading toc.js asap -->
        <script src="../toc.js"></script>
    </head>
    <body>
    <div id="mdbook-help-container">
        <div id="mdbook-help-popup">
            <h2 class="mdbook-help-title">Keyboard shortcuts</h2>
            <div>
                <p>Press <kbd>←</kbd> or <kbd>→</kbd> to navigate between chapters</p>
                <p>Press <kbd>S</kbd> or <kbd>/</kbd> to search in the book</p>
                <p>Press <kbd>?</kbd> to show this help</p>
                <p>Press <kbd>Esc</kbd> to hide this help</p>
            </div>
        </div>
    </div>
    <div id="body-container">
        <!-- Work around some values being stored in localStorage wrapped in quotes -->
        <script>
            try {
                let theme = localStorage.getItem('mdbook-theme');
                let sidebar = localStorage.getItem('mdbook-sidebar');

                if (theme.startsWith('"') && theme.endsWith('"')) {
                    localStorage.setItem('mdbook-theme', theme.slice(1, theme.length - 1));
                }

                if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
                    localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1));
                }
            } catch (e) { }
        </script>

        <!-- Set the theme before any content is loaded, prevents flash -->
        <script>
            const default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? default_dark_theme : default_light_theme;
            let theme;
            try { theme = localStorage.getItem('mdbook-theme'); } catch(e) { }
            if (theme === null || theme === undefined) { theme = default_theme; }
            const html = document.documentElement;
            html.classList.remove('light')
            html.classList.add(theme);
            html.classList.add("js");
        </script>

        <input type="checkbox" id="sidebar-toggle-anchor" class="hidden">

        <!-- Hide / unhide sidebar before it is displayed -->
        <script>
            let sidebar = null;
            const sidebar_toggle = document.getElementById("sidebar-toggle-anchor");
            if (document.body.clientWidth >= 1080) {
                try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { }
                sidebar = sidebar || 'visible';
            } else {
                sidebar = 'hidden';
                sidebar_toggle.checked = false;
            }
            if (sidebar === 'visible') {
                sidebar_toggle.checked = true;
            } else {
                html.classList.remove('sidebar-visible');
            }
        </script>

        <nav id="sidebar" class="sidebar" aria-label="Table of contents">
            <!-- populated by js -->
            <mdbook-sidebar-scrollbox class="sidebar-scrollbox"></mdbook-sidebar-scrollbox>
            <noscript>
                <iframe class="sidebar-iframe-outer" src="../toc.html"></iframe>
            </noscript>
            <div id="sidebar-resize-handle" class="sidebar-resize-handle">
                <div class="sidebar-resize-indicator"></div>
            </div>
        </nav>

        <div id="page-wrapper" class="page-wrapper">

            <div class="page">
                <div id="menu-bar-hover-placeholder"></div>
                <div id="menu-bar" class="menu-bar sticky">
                    <div class="left-buttons">
                        <label id="sidebar-toggle" class="icon-button" for="sidebar-toggle-anchor" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="sidebar">
                            <i class="fa fa-bars"></i>
                        </label>
                        <button id="theme-toggle" class="icon-button" type="button" title="Change theme" aria-label="Change theme" aria-haspopup="true" aria-expanded="false" aria-controls="theme-list">
                            <i class="fa fa-paint-brush"></i>
                        </button>
                        <ul id="theme-list" class="theme-popup" aria-label="Themes" role="menu">
                            <li role="none"><button role="menuitem" class="theme" id="default_theme">Auto</button></li>
                            <li role="none"><button role="menuitem" class="theme" id="light">Light</button></li>
                            <li role="none"><button role="menuitem" class="theme" id="rust">Rust</button></li>
                            <li role="none"><button role="menuitem" class="theme" id="coal">Coal</button></li>
                            <li role="none"><button role="menuitem" class="theme" id="navy">Navy</button></li>
                            <li role="none"><button role="menuitem" class="theme" id="ayu">Ayu</button></li>
                        </ul>
                        <button id="search-toggle" class="icon-button" type="button" title="Search (`/`)" aria-label="Toggle Searchbar" aria-expanded="false" aria-keyshortcuts="/ s" aria-controls="searchbar">
                            <i class="fa fa-search"></i>
                        </button>
                    </div>

                    <h1 class="menu-title">Rust Compiler Development Guide</h1>

                    <div class="right-buttons">
                        <a href="../print.html" title="Print this book" aria-label="Print this book">
                            <i id="print-button" class="fa fa-print"></i>
                        </a>
                        <a href="https://github.com/rust-lang/rustc-dev-guide" title="Git repository" aria-label="Git repository">
                            <i id="git-repository-button" class="fa fa-github"></i>
                        </a>
                        <a href="https://github.com/rust-lang/rustc-dev-guide/edit/main/src/autodiff/debugging.md" title="Suggest an edit" aria-label="Suggest an edit" rel="edit">
                            <i id="git-edit-button" class="fa fa-edit"></i>
                        </a>

                    </div>
                </div>

                <div id="search-wrapper" class="hidden">
                    <form id="searchbar-outer" class="searchbar-outer">
                        <div class="search-wrapper">
                            <input type="search" id="searchbar" name="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header">
                            <div class="spinner-wrapper">
                                <i class="fa fa-spinner fa-spin"></i>
                            </div>
                        </div>
                    </form>
                    <div id="searchresults-outer" class="searchresults-outer hidden">
                        <div id="searchresults-header" class="searchresults-header"></div>
                        <ul id="searchresults">
                        </ul>
                    </div>
                </div>

                <!-- Apply ARIA attributes after the sidebar and the sidebar toggle button are added to the DOM -->
                <script>
                    document.getElementById('sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible');
                    document.getElementById('sidebar').setAttribute('aria-hidden', sidebar !== 'visible');
                    Array.from(document.querySelectorAll('#sidebar a')).forEach(function(link) {
                        link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1);
                    });
                </script>

                <div id="content" class="content">
                    <main>
                        <h1 id="reporting-backend-crashes"><a class="header" href="#reporting-backend-crashes">Reporting backend crashes</a></h1>
<p>If after a compilation failure you are greeted by a large amount of llvm-ir code, then our enzyme backend likely failed to compile your code. These cases are harder to debug, so your help is highly appreciated. Please also keep in mind that release builds are usually much more likely to work at the moment.</p>
<p>The final goal here is to reproduce your bug in the enzyme <a href="https://enzyme.mit.edu/explorer/">compiler explorer</a>, in order to create a bug report in the <a href="https://github.com/enzymead/enzyme/issues">Enzyme</a> repository.</p>
<p>We have an <code>autodiff</code> flag which you can pass to <code>rustflags</code> to help with this. it will print the whole llvm-ir module, along with some <code>__enzyme_fwddiff</code> or <code>__enzyme_autodiff</code> calls. A potential workflow on linux could look like:</p>
<h2 id="controlling-llvm-ir-generation"><a class="header" href="#controlling-llvm-ir-generation">Controlling llvm-ir generation</a></h2>
<p>Before generating the llvm-ir, keep in mind two techniques that can help ensure the relevant rust code is visible for debugging:</p>
<ul>
<li><strong><code>std::hint::black_box</code></strong>: wrap rust variables or expressions in <code>std::hint::black_box()</code> to prevent rust and llvm from optimizing them away. This is useful when you need to inspect or manually manipulate specific values in the llvm-ir.</li>
<li><strong><code>extern "rust"</code> or <code>extern "c"</code></strong>: if you want to see how a specific function declaration is lowered to llvm-ir, you can declare it as <code>extern "rust"</code> or <code>extern "c"</code>. You can also look for existing <code>__enzyme_autodiff</code> or similar declarations within the generated module for examples.</li>
</ul>
<h2 id="1-generate-an-llvm-ir-reproducer"><a class="header" href="#1-generate-an-llvm-ir-reproducer">1) Generate an llvm-ir reproducer</a></h2>
<pre><code class="language-sh">RUSTFLAGS="-Z autodiff=Enable,PrintModbefore" cargo +enzyme build --release &amp;&gt; out.ll 
</code></pre>
<p>This also captures a few warnings and info messages above and below your module. open out.ll and remove every line above <code>; moduleid = &lt;somehash&gt;</code>. Now look at the end of the file and remove everything that's not part of llvm-ir, i.e. remove errors and warnings. The last line of your llvm-ir should now start with <code>!&lt;somenumber&gt; = </code>, i.e. <code>!40831 = !{i32 0, i32 1037508, i32 1037538, i32 1037559}</code> or <code>!43760 = !dilocation(line: 297, column: 5, scope: !43746)</code>.</p>
<p>The actual numbers will depend on your code.</p>
<h2 id="2-check-your-llvm-ir-reproducer"><a class="header" href="#2-check-your-llvm-ir-reproducer">2) Check your llvm-ir reproducer</a></h2>
<p>To confirm that your previous step worked, we will use llvm's <code>opt</code> tool. Find your path to the opt binary, with a path similar to <code>&lt;some_dir&gt;/rust/build/&lt;x86/arm/...-target-triple&gt;/ci-llvm/bin/opt</code>. If you build LLVM from source, you'll likely need to replace <code>ci-llvm</code> with <code>build</code>. Also find <code>llvmenzyme-21.&lt;so/dll/dylib&gt;</code> path, similar to <code>/rust/build/target-triple/enzyme/build/enzyme/llvmenzyme-21</code>. Please keep in mind that llvm frequently updates it's llvm backend, so the version number might be higher (20, 21, ...). Once you have both, run the following command:</p>
<pre><code class="language-sh">&lt;path/to/opt&gt; out.ll -load-pass-plugin=/path/to/build/&lt;target-triple&gt;/stage1/lib/libEnzyme-21.so -passes="enzyme" -enzyme-strict-aliasing=0  -s
</code></pre>
<p>This command might fail for future versions or on your system, in which case you should replace libEnzyme-21.so with LLVMEnzyme-21.so. Look at the Enzyme docs for instructions on how to build it. You might need to also adjust how to build your LLVM version.</p>
<p>If the previous step succeeded, you are going to see the same error that you saw when compiling your rust code with cargo.</p>
<p>If you fail to get the same error, please open an issue in the rust repository. If you succeed, congrats! the file is still huge, so let's automatically minimize it.</p>
<h2 id="3-minimize-your-llvm-ir-reproducer"><a class="header" href="#3-minimize-your-llvm-ir-reproducer">3) Minimize your llvm-ir reproducer</a></h2>
<p>First find your <code>llvm-extract</code> binary, it's in the same folder as your opt binary. then run:</p>
<pre><code class="language-sh">&lt;path/to/llvm-extract&gt; -s --func=&lt;name&gt; --recursive --rfunc="enzyme_autodiff*" --rfunc="enzyme_fwddiff*" --rfunc=&lt;fnc_called_by_enzyme&gt; out.ll -o mwe.ll 
</code></pre>
<p>This command creates <code>mwe.ll</code>, a minimal working example.</p>
<p>Please adjust the name passed with the last <code>--func</code> flag. You can either apply the <code>#[no_mangle]</code> attribute to the function you differentiate, then you can replace it with the rust name. otherwise you will need to look up the mangled function name. To do that, open <code>out.ll</code> and search for <code>__enzyme_fwddiff</code> or <code>__enzyme_autodiff</code>. the first string in that function call is the name of your function. example:</p>
<pre><code class="language-llvm-ir">define double @enzyme_opt_helper_0(ptr %0, i64 %1, double %2) {
  %4 = call double (...) @__enzyme_fwddiff(ptr @_zn2ad3_f217h3b3b1800bd39fde3e, metadata !"enzyme_const", ptr %0, metadata !"enzyme_const", i64 %1, metadata !"enzyme_dup", double %2, double %2)
  ret double %4
}
</code></pre>
<p>Here, <code>_zn2ad3_f217h3b3b1800bd39fde3e</code> is the correct name. make sure to not copy the leading <code>@</code>. redo step 2) by running the <code>opt</code> command again, but this time passing <code>mwe.ll</code> as the input file instead of <code>out.ll</code>. Check if this minimized example still reproduces the crash.</p>
<h2 id="4-optional-minimize-your-llvm-ir-reproducer-further"><a class="header" href="#4-optional-minimize-your-llvm-ir-reproducer-further">4) (Optional) Minimize your llvm-ir reproducer further.</a></h2>
<p>After the previous step you should have an <code>mwe.ll</code> file with ~5k loc. let's try to get it down to 50. find your <code>llvm-reduce</code> binary next to <code>opt</code> and <code>llvm-extract</code>. Copy the first line of your error message, an example could be:</p>
<pre><code class="language-sh">opt: /home/manuel/prog/rust/src/llvm-project/llvm/lib/ir/instructions.cpp:686: void llvm::callinst::init(llvm::functiontype*, llvm::value*, llvm::arrayref&lt;llvm::value*&gt;, llvm::arrayref&lt;llvm::operandbundledeft&lt;llvm::value*&gt; &gt;, const llvm::twine&amp;): assertion `(args.size() == fty-&gt;getnumparams() || (fty-&gt;isvararg() &amp;&amp; args.size() &gt; fty-&gt;getnumparams())) &amp;&amp; "calling a function with bad signature!"' failed.
</code></pre>
<p>If you just get a <code>segfault</code> there is no sensible error message and not much to do automatically, so continue to 5).<br />
otherwise, create a <code>script.sh</code> file containing</p>
<pre><code class="language-sh">#!/bin/bash
&lt;path/to/your/opt&gt; $1 -load-pass-plugin=/path/to/llvmenzyme-19.so -passes="enzyme" \
    |&amp; grep "/some/path.cpp:686: void llvm::callinst::init"
</code></pre>
<p>Experiment a bit with which error message you pass to grep. it should be long enough to make sure that the error is unique. However, for longer errors including <code>(</code> or <code>)</code> you will need to escape them correctly which can become annoying. Run</p>
<pre><code class="language-sh">&lt;path/to/llvm-reduce&gt; --test=script.sh mwe.ll 
</code></pre>
<p>If you see <code>input isn't interesting! verify interesting-ness test</code>, you got the error message in script.sh wrong, you need to make sure that grep matches your actual error. If all works out, you will see a lot of iterations, ending with a new <code>reduced.ll</code> file. Verify with <code>opt</code> that you still get the same error.</p>
<h3 id="advanced-debugging-manual-llvm-ir-investigation"><a class="header" href="#advanced-debugging-manual-llvm-ir-investigation">Advanced debugging: manual llvm-ir investigation</a></h3>
<p>Once you have a minimized reproducer (<code>mwe.ll</code> or <code>reduced.ll</code>), you can delve deeper:</p>
<ul>
<li><strong>manual editing:</strong> try manually rewriting the llvm-ir. for certain issues, like those involving indirect calls, you might investigate enzyme-specific intrinsics like <code>__enzyme_virtualreverse</code>. Understanding how to use these might require consulting enzyme's documentation or source code.</li>
<li><strong>enzyme test cases:</strong> look for relevant test cases within the <a href="https://github.com/enzymead/enzyme/tree/main/enzyme/test">enzyme repository</a> that might demonstrate the correct usage of features or intrinsics related to your problem.</li>
</ul>
<h2 id="5-report-your-bug"><a class="header" href="#5-report-your-bug">5) Report your bug.</a></h2>
<p>Afterwards, you should be able to copy and paste your <code>mwe.ll</code> (or <code>reduced.ll</code>) example into our <a href="https://enzyme.mit.edu/explorer/">compiler explorer</a>.</p>
<ul>
<li>Select <code>llvm ir</code> as language and <code>opt 20</code> as compiler.</li>
<li>Replace the field to the right of your compiler with <code>-passes="enzyme"</code>, if it is not already set.</li>
<li>Hopefully, you will see once again your now familiar error.</li>
<li>Please use the share button to copy links to them.</li>
<li>Please create an issue on <a href="https://github.com/enzymead/enzyme/issues">https://github.com/enzymead/enzyme/issues</a> and share <code>mwe.ll</code> and (if you have it) <code>reduced.ll</code>, as well as links to the compiler explorer. Please feel free to also add your rust code or a link to it.</li>
</ul>
<h4 id="documenting-findings"><a class="header" href="#documenting-findings">Documenting findings</a></h4>
<p>some enzyme errors, like <code>"attempting to call an indirect active function whose runtime value is inactive"</code>, have historically caused confusion. If you investigate such an issue, even if you don't find a complete solution, please consider documenting your findings. If the insights are general to enzyme and not specific to its rust usage, contributing them to the main <a href="https://github.com/enzymead/www">enzyme documentation</a> is often the best first step. You can also mention your findings in the relevant enzyme github issue or propose updates to these docs if appropriate. This helps prevent others from starting from scratch.</p>
<p>With a clear reproducer and documentation, hopefully an enzyme developer will be able to fix your bug. Once that happens, the enzyme submodule inside the rust compiler will be updated, which should allow you to differentiate your rust code. Thanks for helping us to improve rust-ad.</p>
<h1 id="minimize-rust-code"><a class="header" href="#minimize-rust-code">Minimize rust code</a></h1>
<p>Beyond having a minimal llvm-ir reproducer, it is also helpful to have a minimal rust reproducer without dependencies. This allows us to add it as a test case to ci once we fix it, which avoids regressions for the future.</p>
<p>There are a few solutions to help you with minimizing the rust reproducer. This is probably the most simple automated approach: <a href="https://github.com/nilstrieb/cargo-minimize">cargo-minimize</a>.</p>
<p>Otherwise we have various alternatives, including <a href="https://github.com/langston-barrett/treereduce"><code>treereduce</code></a>, <a href="https://github.com/googleprojectzero/halfempty"><code>halfempty</code></a>, or <a href="https://github.com/renatahodovan/picireny"><code>picireny</code></a>, potentially also <a href="https://github.com/csmith-project/creduce"><code>creduce</code></a>.</p>

                    </main>

                    <nav class="nav-wrapper" aria-label="Page navigation">
                        <!-- Mobile navigation buttons -->
                            <a rel="prev" href="../autodiff/installation.html" class="mobile-nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
                                <i class="fa fa-angle-left"></i>
                            </a>

                            <a rel="next prefetch" href="../autodiff/flags.html" class="mobile-nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
                                <i class="fa fa-angle-right"></i>
                            </a>

                        <div style="clear: both"></div>
                    </nav>
                </div>
            </div>

            <nav class="nav-wide-wrapper" aria-label="Page navigation">
                    <a rel="prev" href="../autodiff/installation.html" class="nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
                        <i class="fa fa-angle-left"></i>
                    </a>

                    <a rel="next prefetch" href="../autodiff/flags.html" class="nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
                        <i class="fa fa-angle-right"></i>
                    </a>
            </nav>

        </div>




        <script>
            window.playground_copyable = true;
        </script>


        <script src="../elasticlunr.min.js"></script>
        <script src="../mark.min.js"></script>
        <script src="../searcher.js"></script>

        <script src="../clipboard.min.js"></script>
        <script src="../highlight.js"></script>
        <script src="../book.js"></script>

        <!-- Custom JS scripts -->
        <script src="../mermaid.min.js"></script>
        <script src="../mermaid-init.js"></script>
        <script src="../pagetoc.js"></script>



    </div>
    </body>
</html>
