<!DOCTYPE html><htmllang="en"><head><metacharset="utf-8"><metaname="viewport"content="width=device-width, initial-scale=1.0"><metaname="generator"content="rustdoc"><metaname="description"content="API documentation for the Rust `Layout` struct in crate `cranelift_codegen`."><metaname="keywords"content="rust, rustlang, rust-lang, Layout"><title>cranelift_codegen::ir::layout::Layout - Rust</title><linkrel="stylesheet"type="text/css"href="../../../normalize.css"><linkrel="stylesheet"type="text/css"href="../../../rustdoc.css"id="mainThemeStyle"><linkrel="stylesheet"type="text/css"href="../../../dark.css"><linkrel="stylesheet"type="text/css"href="../../../light.css"id="themeStyle"><scriptsrc="../../../storage.js"></script><noscript><linkrel="stylesheet"href="../../../noscript.css"></noscript><linkrel="shortcut icon"href="../../../favicon.ico"><styletype="text/css">#crate-search{background-image:url("../../../down-arrow.svg");}</style></head><bodyclass="rustdoc struct"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><navclass="sidebar"><divclass="sidebar-menu">☰</div><ahref='../../../cranelift_codegen/index.html'><divclass='logo-container'><imgsrc='../../../rust-logo.png'alt='logo'></div></a><pclass='location'>Struct Layout</p><divclass="sidebar-elems"><divclass="block items"><aclass="sidebar-title"href="#methods">Methods</a><divclass="sidebar-links"><ahref="#method.append_ebb">append_ebb</a><ahref="#method.append_inst">append_inst</a><ahref="#method.clear">clear</a><ahref="#method.ebb_insts">ebb_insts</a><ahref="#method.ebbs">ebbs</a><ahref="#method.entry_block">entry_block</a><ahref="#method.first_inst">first_inst</a><ahref="#method.insert_ebb">insert_ebb</a><ahref="#method.insert_ebb_after">insert_ebb_after</a><ahref="#method.insert_inst">insert_inst</a><ahref="#method.inst_ebb">inst_ebb</a><ahref="#method.is_ebb_inserted">is_ebb_inserted</a><ahref="#method.last_ebb">last_ebb</a><ahref="#method.last_inst">last_inst</a><ahref="#method.new">new</a><ahref="#method.next_ebb">next_ebb</a><ahref="#method.next_inst">next_inst</a><ahref="#method.pp_ebb">pp_ebb</a><ahref="#method.prev_ebb">prev_ebb</a><ahref="#method.prev_inst">prev_inst</a><ahref="#method.remove_ebb">remove_ebb</a><ahref="#method.remove_inst">remove_inst</a><ahref="#method.split_ebb">split_ebb</a></div><aclass="sidebar-title"href="#implementations">Trait Implementations</a><divclass="sidebar-links"><ahref="#impl-Clone">Clone</a><ahref="#impl-IntoIterator">IntoIterator</a><ahref="#impl-ProgramOrder">ProgramOrder</a></div><aclass="sidebar-title"href="#synthetic-implementations">Auto Trait Implementations</a><divclass="sidebar-links"><ahref="#impl-RefUnwindSafe">RefUnwindSafe</a><ahref="#impl-Send">Send</a><ahref="#impl-Sync">Sync</a><ahref="#impl-Unpin">Unpin</a><ahref="#impl-UnwindSafe">UnwindSafe</a></div><aclass="sidebar-title"href="#blanket-implementations">Blanket Implementations</a><divclass="sidebar-links"><ahref="#impl-Any">Any</a><ahref="#impl-Borrow%3CT%3E">Borrow<T></a><ahref="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><ahref="#impl-From%3CT%3E">From<T></a><ahref="#impl-Into%3CU%3E">Into<U></a><ahref="#impl-ToOwned">ToOwned</a><ahref="#impl-TryFrom%3CU%3E">TryFrom<U></a><ahref="#impl-TryInto%3CU%3E">TryInto<U></a></div></div><pclass='location'><ahref='../../index.html'>cranelift_codegen</a>::<wbr><ahref='../index.html'>ir</a>::<wbr><ahref='index.html'>layout</a></p><script>window.sidebarCurrent={name:'Layout',ty:'struct',relpath:''};</script><scriptdefersrc="sidebar-items.js"></script></div></nav><divclass="theme-picker"><buttonid="theme-picker"aria-label="Pick another theme!"><imgsrc="../../../brush.svg"width="18"alt="Pick another theme!"></button><divid="theme-choices"></div></div><scriptsrc="../../../theme.js"></script><navclass="sub"><formclass="search-form js-only"><divclass="search-container"><div><selectid="crate-se
contain definitions of instructions or EBBs, but depends on <code>Inst</code> and <code>Ebb</code> entity references
being defined elsewhere.</p>
<p>This data structure determines:</p>
<ul>
<li>The order of EBBs in the function.</li>
<li>Which EBB contains a given instruction.</li>
<li>The order of instructions with an EBB.</li>
</ul>
<p>While data dependencies are not recorded, instruction ordering does affect control
dependencies, so part of the semantics of the program are determined by the layout.</p>
</div><h2id='methods'class='small-section-header'>Methods<ahref='#methods'class='anchor'></a></h2><h3id='impl'class='impl'><codeclass='in-band'>impl <aclass="struct"href="../../../cranelift_codegen/ir/layout/struct.Layout.html"title="struct cranelift_codegen::ir::layout::Layout">Layout</a></code><ahref='#impl'class='anchor'></a><aclass='srclink'href='../../../src/cranelift_codegen/ir/layout.rs.html#45-63'title='goto source code'>[src]</a></h3><divclass='impl-items'><h4id='method.new'class="method"><codeid='new.v'>pub fn <ahref='#method.new'class='fnname'>new</a>() -> Self</code><aclass='srclink'href='../../../src/cranelift_codegen/ir/layout.rs.html#47-54'title='goto source code'>[src]</a></h4><divclass='docblock'><p>Create a new empty <code>Layout</code>.</p>
</div><h4id='method.clear'class="method"><codeid='clear.v'>pub fn <ahref='#method.clear'class='fnname'>clear</a>(&mut self)</code><aclass='srclink'href='../../../src/cranelift_codegen/ir/layout.rs.html#57-62'title='goto source code'>[src]</a></h4><divclass='docblock'><p>Clear the layout.</p>
</div></div><h3id='impl-1'class='impl'><codeclass='in-band'>impl <aclass="struct"href="../../../cranelift_codegen/ir/layout/struct.Layout.html"title="struct cranelift_codegen::ir::layout::Layout">Layout</a></code><ahref='#impl-1'class='anchor'></a><aclass='srclink'href='../../../src/cranelift_codegen/ir/layout.rs.html#333-462'title='goto source code'>[src]</a></h3><divclass='docblock'><p>Methods for laying out EBBs.</p>
<p>An unknown EBB starts out as <em>not inserted</em> in the EBB layout. The layout is a linear order of
inserted EBBs. Once an EBB has been inserted in the layout, instructions can be added. An EBB
can only be removed from the layout when it is empty.</p>
<p>Since every EBB must end with a terminator instruction which cannot fall through, the layout of
EBBs do not affect the semantics of the program.</p>
</div><divclass='impl-items'><h4id='method.is_ebb_inserted'class="method"><codeid='is_ebb_inserted.v'>pub fn <ahref='#method.is_ebb_inserted'class='fnname'>is_ebb_inserted</a>(&self, ebb: <aclass="struct"href="../../../cranelift_codegen/ir/entities/struct.Ebb.html"title="struct cranelift_codegen::ir::entities::Ebb">Ebb</a>) -><aclass="primitive"href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code><aclass='srclink'href='../../../src/cranelift_codegen/ir/layout.rs.html#335-337'title='goto source code'>[src]</a></h4><divclass='docblock'><p>Is <code>ebb</code> currently part of the layout?</p>
</div><h4id='method.append_ebb'class="method"><codeid='append_ebb.v'>pub fn <ahref='#method.append_ebb'class='fnname'>append_ebb</a>(&mut self, ebb: <aclass="struct"href="../../../cranelift_codegen/ir/entities/struct.Ebb.html"title="struct cranelift_codegen::ir::entities::Ebb">Ebb</a>)</code><aclass='srclink'href='../../../src/cranelift_codegen/ir/layout.rs.html#340-358'title='goto source code'>[src]</a></h4><divclass='docblock'><p>Insert <code>ebb</code> as the last EBB in the layout.</p>
</div><h4id='method.insert_ebb'class="method"><codeid='insert_ebb.v'>pub fn <ahref='#method.insert_ebb'class='fnname'>insert_ebb</a>(&mut self, ebb: <aclass="struct"href="../../../cranelift_codegen/ir/entities/struct.Ebb.html"title="struct cranelift_codegen::ir::entities::Ebb">Ebb</a>, before: <aclass="struct"href="../../../cranelift_codegen/ir/entities/struct.Ebb.html"title="struct cranelift_codegen::ir::entities::Ebb">Ebb</a>)</code><aclass='srclink'href='../../../src/cranelift_codegen/ir/layout.rs.html#361-382'title='goto source code'>[src]</a></h4><divclass='docblock'><p>Insert <code>ebb</code> in the layout before the existing EBB <code>before</code>.</p>
</div><h4id='method.insert_ebb_after'class="method"><codeid='insert_ebb_after.v'>pub fn <ahref='#method.insert_ebb_after'class='fnname'>insert_ebb_after</a>(&mut self, ebb: <aclass="struct"href="../../../cranelift_codegen/ir/entities/struct.Ebb.html"title="struct cranelift_codegen::ir::entities::Ebb">Ebb</a>, after: <aclass="struct"href="../../../cranelift_codegen/ir/entities/struct.Ebb.html"title="struct cranelift_codegen::ir::entities::Ebb">Ebb</a>)</code><aclass='srclink'href='../../../src/cranelift_codegen/ir/layout.rs.html#385-406'title='goto source code'>[src]</a></h4><divclass='docblock'><p>Insert <code>ebb</code> in the layout <em>after</em> the existing EBB <code>after</code>.</p>
</div><h4id='method.remove_ebb'class="method"><codeid='remove_ebb.v'>pub fn <ahref='#method.remove_ebb'class='fnname'>remove_ebb</a>(&mut self, ebb: <aclass="struct"href="../../../cranelift_codegen/ir/entities/struct.Ebb.html"title="struct cranelift_codegen::ir::entities::Ebb">Ebb</a>)</code><aclass='srclink'href='../../../src/cranelift_codegen/ir/layout.rs.html#409-432'title='goto source code'>[src]</a></h4><divclass='docblock'><p>Remove <code>ebb</code> from the layout.</p>
</div><h4id='method.ebbs'class="method"><divclass="important-traits"><divclass='tooltip'>ⓘ<spanclass='tooltiptext'>Important traits for <aclass="struct"href="../../../cranelift_codegen/ir/layout/struct.Ebbs.html"title="struct cranelift_codegen::ir::layout::Ebbs">Ebbs</a><'f></span></div><divclass="content hidden"><h3class="important">Important traits for <aclass="struct"href="../../../cranelift_codegen/ir/layout/struct.Ebbs.html"title="struct cranelift_codegen::ir::layout::Ebbs">Ebbs</a><'f></h3><codeclass="content"><spanclass="where fmt-newline">impl<'f><aclass="trait"href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html"title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <aclass="struct"href="../../../cranelift_codegen/ir/layout/struct.Ebbs.html"title="struct cranelift_codegen::ir::layout::Ebbs">Ebbs</a><'f></span><spanclass="where fmt-newline"> type <ahref='https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item'class="type">Item</a> = <aclass="struct"href="../../../cranelift_codegen/ir/entities/struct.Ebb.html"title="struct cranelift_codegen::ir::entities::Ebb">Ebb</a>;</span></code></div></div><codeid='ebbs.v'>pub fn <ahref='#method.ebbs'class='fnname'>ebbs</a>(&self) -><aclass="struct"href="../../../cranelift_codegen/ir/layout/struct.Ebbs.html"title="struct cranelift_codegen::ir::layout::Ebbs">Ebbs</a></code><aclass='srclink'href='../../../src/cranelift_codegen/ir/layout.rs.html#435-440'title='goto source code'>[src]</a></h4><divclass='docblock'><p>Return an iterator over all EBBs in layout order.</p>
This is simply the first EBB in the layout order.</p>
</div><h4id='method.last_ebb'class="method"><codeid='last_ebb.v'>pub fn <ahref='#method.last_ebb'class='fnname'>last_ebb</a>(&self) -><aclass="enum"href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html"title="enum core::option::Option">Option</a><<aclass="struct"href="../../../cranelift_codegen/ir/entities/struct.Ebb.html"title="struct cranelift_codegen::ir::entities::Ebb">Ebb</a>></code><aclass='srclink'href='../../../src/cranelift_codegen/ir/layout.rs.html#449-451'title='goto source code'>[src]</a></h4><divclass='docblock'><p>Get the last EBB in the layout.</p>
</div><h4id='method.prev_ebb'class="method"><codeid='prev_ebb.v'>pub fn <ahref='#method.prev_ebb'class='fnname'>prev_ebb</a>(&self, ebb: <aclass="struct"href="../../../cranelift_codegen/ir/entities/struct.Ebb.html"title="struct cranelift_codegen::ir::entities::Ebb">Ebb</a>) -><aclass="enum"href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html"title="enum core::option::Option">Option</a><<aclass="struct"href="../../../cranelift_codegen/ir/entities/struct.Ebb.html"title="struct cranelift_codegen::ir::entities::Ebb">Ebb</a>></code><aclass='srclink'href='../../../src/cranelift_codegen/ir/layout.rs.html#454-456'title='goto source code'>[src]</a></h4><divclass='docblock'><p>Get the block preceding <code>ebb</code> in the layout order.</p>
</div><h4id='method.next_ebb'class="method"><codeid='next_ebb.v'>pub fn <ahref='#method.next_ebb'class='fnname'>next_ebb</a>(&self, ebb: <aclass="struct"href="../../../cranelift_codegen/ir/entities/struct.Ebb.html"title="struct cranelift_codegen::ir::entities::Ebb">Ebb</a>) -><aclass="enum"href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html"title="enum core::option::Option">Option</a><<aclass="struct"href="../../../cranelift_codegen/ir/entities/struct.Ebb.html"title="struct cranelift_codegen::ir::entities::Ebb">Ebb</a>></code><aclass='srclink'href='../../../src/cranelift_codegen/ir/layout.rs.html#459-461'title='goto source code'>[src]</a></h4><divclass='docblock'><p>Get the block following <code>ebb</code> in the layout order.</p>
</div></div><h3id='impl-2'class='impl'><codeclass='in-band'>impl <aclass="struct"href="../../../cranelift_codegen/ir/layout/struct.Layout.html"title="struct cranelift_codegen::ir::layout::Layout">Layout</a></code><ahref='#impl-2'class='anchor'></a><aclass='srclink'href='../../../src/cranelift_codegen/ir/layout.rs.html#507-692'title='goto source code'>[src]</a></h3><divclass='docblock'><p>Methods for arranging instructions.</p>
<p>An instruction starts out as <em>not inserted</em> in the layout. An instruction can be inserted into
an EBB at a given position.</p>
</div><divclass='impl-items'><h4id='method.inst_ebb'class="method"><codeid='inst_ebb.v'>pub fn <ahref='#method.inst_ebb'class='fnname'>inst_ebb</a>(&self, inst: <aclass="struct"href="../../../cranelift_codegen/ir/entities/struct.Inst.html"title="struct cranelift_codegen::ir::entities::Inst">Inst</a>) -><aclass="enum"href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html"title="enum core::option::Option">Option</a><<aclass="struct"href="../../../cranelift_codegen/ir/entities/struct.Ebb.html"title="struct cranelift_codegen::ir::entities::Ebb">Ebb</a>></code><aclass='srclink'href='../../../src/cranelift_codegen/ir/layout.rs.html#509-511'title='goto source code'>[src]</a></h4><divclass='docblock'><p>Get the EBB containing <code>inst</code>, or <code>None</code> if <code>inst</code> is not inserted in the layout.</p>
</div><h4id='method.pp_ebb'class="method"><codeid='pp_ebb.v'>pub fn <ahref='#method.pp_ebb'class='fnname'>pp_ebb</a><PP>(&self, pp: PP) -><aclass="struct"href="../../../cranelift_codegen/ir/entities/struct.Ebb.html"title="struct cranelift_codegen::ir::entities::Ebb">Ebb</a><spanclass="where fmt-newline">where<br> PP: <aclass="trait"href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html"title="trait core::convert::Into">Into</a><<aclass="enum"href="../../../cranelift_codegen/ir/enum.ExpandedProgramPoint.html"title="enum cranelift_codegen::ir::ExpandedProgramPoint">ExpandedProgramPoint</a>>, </span></code><aclass='srclink'href='../../../src/cranelift_codegen/ir/layout.rs.html#514-524'title='goto source code'>[src]</a></h4><divclass='docblock'><p>Get the EBB containing the program point <code>pp</code>. Panic if <code>pp</code> is not in the layout.</p>
</div><h4id='method.append_inst'class="method"><codeid='append_inst.v'>pub fn <ahref='#method.append_inst'class='fnname'>append_inst</a>(&mut self, inst: <aclass="struct"href="../../../cranelift_codegen/ir/entities/struct.Inst.html"title="struct cranelift_codegen::ir::entities::Inst">Inst</a>, ebb: <aclass="struct"href="../../../cranelift_codegen/ir/entities/struct.Ebb.html"title="struct cranelift_codegen::ir::entities::Ebb">Ebb</a>)</code><aclass='srclink'href='../../../src/cranelift_codegen/ir/layout.rs.html#527-549'title='goto source code'>[src]</a></h4><divclass='docblock'><p>Append <code>inst</code> to the end of <code>ebb</code>.</p>
</div><h4id='method.first_inst'class="method"><codeid='first_inst.v'>pub fn <ahref='#method.first_inst'class='fnname'>first_inst</a>(&self, ebb: <aclass="struct"href="../../../cranelift_codegen/ir/entities/struct.Ebb.html"title="struct cranelift_codegen::ir::entities::Ebb">Ebb</a>) -><aclass="enum"href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html"title="enum core::option::Option">Option</a><<aclass="struct"href="../../../cranelift_codegen/ir/entities/struct.Inst.html"title="struct cranelift_codegen::ir::entities::Inst">Inst</a>></code><aclass='srclink'href='../../../src/cranelift_codegen/ir/layout.rs.html#552-554'title='goto source code'>[src]</a></h4><divclass='docblock'><p>Fetch an ebb's first instruction.</p>
</div><h4id='method.last_inst'class="method"><codeid='last_inst.v'>pub fn <ahref='#method.last_inst'class='fnname'>last_inst</a>(&self, ebb: <aclass="struct"href="../../../cranelift_codegen/ir/entities/struct.Ebb.html"title="struct cranelift_codegen::ir::entities::Ebb">Ebb</a>) -><aclass="enum"href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html"title="enum core::option::Option">Option</a><<aclass="struct"href="../../../cranelift_codegen/ir/entities/struct.Inst.html"title="struct cranelift_codegen::ir::entities::Inst">Inst</a>></code><aclass='srclink'href='../../../src/cranelift_codegen/ir/layout.rs.html#557-559'title='goto source code'>[src]</a></h4><divclass='docblock'><p>Fetch an ebb's last instruction.</p>
</div><h4id='method.next_inst'class="method"><codeid='next_inst.v'>pub fn <ahref='#method.next_inst'class='fnname'>next_inst</a>(&self, inst: <aclass="struct"href="../../../cranelift_codegen/ir/entities/struct.Inst.html"title="struct cranelift_codegen::ir::entities::Inst">Inst</a>) -><aclass="enum"href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html"title="enum core::option::Option">Option</a><<aclass="struct"href="../../../cranelift_codegen/ir/entities/struct.Inst.html"title="struct cranelift_codegen::ir::entities::Inst">Inst</a>></code><aclass='srclink'href='../../../src/cranelift_codegen/ir/layout.rs.html#562-564'title='goto source code'>[src]</a></h4><divclass='docblock'><p>Fetch the instruction following <code>inst</code>.</p>
</div><h4id='method.insert_inst'class="method"><codeid='insert_inst.v'>pub fn <ahref='#method.insert_inst'class='fnname'>insert_inst</a>(&mut self, inst: <aclass="struct"href="../../../cranelift_codegen/ir/entities/struct.Inst.html"title="struct cranelift_codegen::ir::entities::Inst">Inst</a>, before: <aclass="struct"href="../../../cranelift_codegen/ir/entities/struct.Inst.html"title="struct cranelift_codegen::ir::entities::Inst">Inst</a>)</code><aclass='srclink'href='../../../src/cranelift_codegen/ir/layout.rs.html#572-590'title='goto source code'>[src]</a></h4><divclass='docblock'><p>Insert <code>inst</code> before the instruction <code>before</code> in the same EBB.</p>
</div><h4id='method.remove_inst'class="method"><codeid='remove_inst.v'>pub fn <ahref='#method.remove_inst'class='fnname'>remove_inst</a>(&mut self, inst: <aclass="struct"href="../../../cranelift_codegen/ir/entities/struct.Inst.html"title="struct cranelift_codegen::ir::entities::Inst">Inst</a>)</code><aclass='srclink'href='../../../src/cranelift_codegen/ir/layout.rs.html#593-615'title='goto source code'>[src]</a></h4><divclass='docblock'><p>Remove <code>inst</code> from the layout.</p>
</div><h4id='method.ebb_insts'class="method"><divclass="important-traits"><divclass='tooltip'>ⓘ<spanclass='tooltiptext'>Important traits for <aclass="struct"href="../../../cranelift_codegen/ir/layout/struct.Insts.html"title="struct cranelift_codegen::ir::layout::Insts">Insts</a><'f></span></div><divclass="content hidden"><h3class="important">Important traits for <aclass="struct"href="../../../cranelift_codegen/ir/layout/struct.Insts.html"title="struct cranelift_codegen::ir::layout::Insts">Insts</a><'f></h3><codeclass="content"><spanclass="where fmt-newline">impl<'f><aclass="trait"href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html"title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <aclass="struct"href="../../../cranelift_codegen/ir/layout/struct.Insts.html"title="struct cranelift_codegen::ir::layout::Insts">Insts</a><'f></span><spanclass="where fmt-newline"> type <ahref='https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item'class="type">Item</a> = <aclass="struct"href="../../../cranelift_codegen/ir/entities/struct.Inst.html"title="struct cranelift_codegen::ir::entities::Inst">Inst</a>;</span></code></div></div><codeid='ebb_insts.v'>pub fn <ahref='#method.ebb_insts'class='fnname'>ebb_insts</a>(&self, ebb: <aclass="struct"href="../../../cranelift_codegen/ir/entities/struct.Ebb.html"title="struct cranelift_codegen::ir::entities::Ebb">Ebb</a>) -><aclass="struct"href="../../../cranelift_codegen/ir/layout/struct.Insts.html"title="struct cranelift_codegen::ir::layout::Insts">Insts</a></code><aclass='srclink'href='../../../src/cranelift_codegen/ir/layout.rs.html#618-624'title='goto source code'>[src]</a></h4><divclass='docblock'><p>Iterate over the instructions in <code>ebb</code> in layout order.</p>
</div><h4id='method.split_ebb'class="method"><codeid='split_ebb.v'>pub fn <ahref='#method.split_ebb'class='fnname'>split_ebb</a>(&mut self, new_ebb: <aclass="struct"href="../../../cranelift_codegen/ir/entities/struct.Ebb.html"title="struct cranelift_codegen::ir::entities::Ebb">Ebb</a>, before: <aclass="struct"href="../../../cranelift_codegen/ir/entities/struct.Inst.html"title="struct cranelift_codegen::ir::entities::Inst">Inst</a>)</code><aclass='srclink'href='../../../src/cranelift_codegen/ir/layout.rs.html#648-691'title='goto source code'>[src]</a></h4><divclass='docblock'><p>Split the EBB containing <code>before</code> in two.</p>
<p>Insert <code>new_ebb</code> after the old EBB and move <code>before</code> and the following instructions to
<code>new_ebb</code>:</p>
<pre><codeclass="language-text">old_ebb:
i1
i2
i3 << before
i4
</code></pre>
<p>becomes:</p>
<pre><codeclass="language-text">old_ebb:
i1
i2
new_ebb:
i3 << before
i4
</code></pre>
</div></div><h2id='implementations'class='small-section-header'>Trait Implementations<ahref='#implementations'class='anchor'></a></h2><divid='implementations-list'><h3id='impl-ProgramOrder'class='impl'><codeclass='in-band'>impl <aclass="trait"href="../../../cranelift_codegen/ir/trait.ProgramOrder.html"title="trait cranelift_codegen::ir::ProgramOrder">ProgramOrder</a> for <aclass="struct"href="../../../cranelift_codegen/ir/layout/struct.Layout.html"title="struct cranelift_codegen::ir::layout::Layout">Layout</a></code><ahref='#impl-ProgramOrder'class='anchor'></a><aclass='srclink'href='../../../src/cranelift_codegen/ir/layout.rs.html#113-130'title='goto source code'>[src]</a></h3><divclass='impl-items'><h4id='method.cmp'class="method hidden"><codeid='cmp.v'>fn <ahref='../../../cranelift_codegen/ir/trait.ProgramOrder.html#tymethod.cmp'class='fnname'>cmp</a><A, B>(&self, a: A, b: B) -><aclass="enum"href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html"title="enum core::cmp::Ordering">Ordering</a><spanclass="where fmt-newline">where<br> A: <aclass="trait"href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html"title="trait core::convert::Into">Into</a><<aclass="enum"href="../../../cranelift_codegen/ir/enum.ExpandedProgramPoint.html"title="enum cranelift_codegen::ir::ExpandedProgramPoint">ExpandedProgramPoint</a>>,<br> B: <aclass="trait"href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html"title="trait core::convert::Into">Into</a><<aclass="enum"href="../../../cranelift_codegen/ir/enum.ExpandedProgramPoint.html"title="enum cranelift_codegen::ir::ExpandedProgramPoint">ExpandedProgramPoint</a>>, </span></code><aclass='srclink'href='../../../src/cranelift_codegen/ir/layout.rs.html#114-122'title='goto source code'>[src]</a></h4><divclass='docblock hidden'><p>Compare the program points <code>a</code> and <code>b</code> relative to this program order. <ahref="../../../cranelift_codegen/ir/trait.ProgramOrder.html#tymethod.cmp">Read more</a></p>
</div><h4id='method.is_ebb_gap'class="method hidden"><codeid='is_ebb_gap.v'>fn <ahref='../../../cranelift_codegen/ir/trait.ProgramOrder.html#tymethod.is_ebb_gap'class='fnname'>is_ebb_gap</a>(&self, inst: <aclass="struct"href="../../../cranelift_codegen/ir/entities/struct.Inst.html"title="struct cranelift_codegen::ir::entities::Inst">Inst</a>, ebb: <aclass="struct"href="../../../cranelift_codegen/ir/entities/struct.Ebb.html"title="struct cranelift_codegen::ir::entities::Ebb">Ebb</a>) -><aclass="primitive"href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code><aclass='srclink'href='../../../src/cranelift_codegen/ir/layout.rs.html#124-129'title='goto source code'>[src]</a></h4><divclass='docblock hidden'><p>Is the range from <code>inst</code> to <code>ebb</code> just the gap between consecutive EBBs? <ahref="../../../cranelift_codegen/ir/trait.ProgramOrder.html#tymethod.is_ebb_gap">Read more</a></p>
</div></div><h3id='impl-IntoIterator'class='impl'><codeclass='in-band'>impl<'f><aclass="trait"href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html"title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a> for &'f <aclass="struct"href="../../../cranelift_codegen/ir/layout/struct.Layout.html"title="struct cranelift_codegen::ir::layout::Layout">Layout</a></code><ahref='#impl-IntoIterator'class='anchor'></a><aclass='srclink'href='../../../src/cranelift_codegen/ir/layout.rs.html#494-501'title='goto source code'>[src]</a></h3><divclass='docblock'><p>Use a layout reference in a for loop.</p>
</div><divclass='impl-items'><h4id='associatedtype.Item'class="type"><codeid='Item.t'>type <ahref='https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item'class="type">Item</a> = <aclass="struct"href="../../../cranelift_codegen/ir/entities/struct.Ebb.html"title="struct cranelift_codegen::ir::entities::Ebb">Ebb</a></code></h4><divclass='docblock'><p>The type of the elements being iterated over.</p>
</div><h4id='associatedtype.IntoIter'class="type"><codeid='IntoIter.t'>type <ahref='https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter'class="type">IntoIter</a> = <aclass="struct"href="../../../cranelift_codegen/ir/layout/struct.Ebbs.html"title="struct cranelift_codegen::ir::layout::Ebbs">Ebbs</a><'f></code></h4><divclass='docblock'><p>Which kind of iterator are we turning this into?</p>
</div><h4id='method.into_iter'class="method hidden"><divclass="important-traits"><divclass='tooltip'>ⓘ<spanclass='tooltiptext'>Important traits for <aclass="struct"href="../../../cranelift_codegen/ir/layout/struct.Ebbs.html"title="struct cranelift_codegen::ir::layout::Ebbs">Ebbs</a><'f></span></div><divclass="content hidden"><h3class="important">Important traits for <aclass="struct"href="../../../cranelift_codegen/ir/layout/struct.Ebbs.html"title="struct cranelift_codegen::ir::layout::Ebbs">Ebbs</a><'f></h3><codeclass="content"><spanclass="where fmt-newline">impl<'f><aclass="trait"href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html"title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <aclass="struct"href="../../../cranelift_codegen/ir/layout/struct.Ebbs.html"title="struct cranelift_codegen::ir::layout::Ebbs">Ebbs</a><'f></span><spanclass="where fmt-newline"> type <ahref='https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item'class="type">Item</a> = <aclass="struct"href="../../../cranelift_codegen/ir/entities/struct.Ebb.html"title="struct cranelift_codegen::ir::entities::Ebb">Ebb</a>;</span></code></div></div><codeid='into_iter.v'>fn <ahref='https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#tymethod.into_iter'class='fnname'>into_iter</a>(self) -><aclass="struct"href="../../../cranelift_codegen/ir/layout/struct.Ebbs.html"title="struct cranelift_codegen::ir::layout::Ebbs">Ebbs</a><'f></code><aclass='srclink'href='../../../src/cranelift_codegen/ir/layout.rs.html#498-500'title='goto source code'>[src]</a></h4><divclass='docblock hidden'><p>Creates an iterator from a value. <ahref="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#tymethod.into_iter">Read more</a></p>
</div></div><h3id='impl-Clone'class='impl'><codeclass='in-band'>impl <aclass="trait"href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html"title="trait core::clone::Clone">Clone</a> for <aclass="struct"href="../../../cranelift_codegen/ir/layout/struct.Layout.html"title="struct cranelift_codegen::ir::layout::Layout">Layout</a></code><ahref='#impl-Clone'class='anchor'></a><aclass='srclink'href='../../../src/cranelift_codegen/ir/layout.rs.html#28'title='goto source code'>[src]</a></h3><divclass='impl-items'><h4id='method.clone'class="method hidden"><codeid='clone.v'>fn <ahref='https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone'class='fnname'>clone</a>(&self) -><aclass="struct"href="../../../cranelift_codegen/ir/layout/struct.Layout.html"title="struct cranelift_codegen::ir::layout::Layout">Layout</a></code><aclass='srclink'href='../../../src/cranelift_codegen/ir/layout.rs.html#28'title='goto source code'>[src]</a></h4><divclass='docblock hidden'><p>Returns a copy of the value. <ahref="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
</div><h4id='method.clone_from'class="method hidden"><codeid='clone_from.v'>fn <ahref='https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from'class='fnname'>clone_from</a>(&mut self, source: <aclass="primitive"href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</code><spanclass='since'title='Stable since Rust version 1.0.0'>1.0.0</span><aclass='srclink'href='https://doc.rust-lang.org/nightly/src/core/clone.rs.html#131-133'title='goto source code'>[src]</a></h4><divclass='docblock hidden'><p>Performs copy-assignment from <code>source</code>. <ahref="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
</div></div><h3id='impl-TryFrom%3CU%3E'class='impl'><codeclass='in-band'>impl<T, U><aclass="trait"href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html"title="trait core::convert::TryFrom">TryFrom</a><U> for T <spanclass="where fmt-newline">where<br> U: <aclass="trait"href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html"title="trait core::convert::Into">Into</a><T>, </span></code><ahref='#impl-TryFrom%3CU%3E'class='anchor'></a><aclass='srclink'href='https://doc.rust-lang.org/nightly/src/core/convert.rs.html#571-577'title='goto source code'>[src]</a></h3><divclass='impl-items'><h4id='associatedtype.Error'class="type"><codeid='Error.t'>type <ahref='https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error'class="type">Error</a> = <aclass="enum"href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html"title="enum core::convert::Infallible">Infallible</a></code></h4><divclass='docblock'><p>The type returned in the event of a conversion error.</p>
</div><h4id='method.try_from'class="method hidden"><codeid='try_from.v'>fn <ahref='https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from'class='fnname'>try_from</a>(value: U) -><aclass="enum"href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html"title="enum core::result::Result">Result</a><T, <T as <aclass="trait"href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html"title="trait core::convert::TryFrom">TryFrom</a><U>>::<aclass="type"href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error"title="type core::convert::TryFrom::Error">Error</a>></code><aclass='srclink'href='https://doc.rust-lang.org/nightly/src/core/convert.rs.html#574-576'title='goto source code'>[src]</a></h4><divclass='docblock hidden'><p>Performs the conversion.</p>
</div></div><h3id='impl-Into%3CU%3E'class='impl'><codeclass='in-band'>impl<T, U><aclass="trait"href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html"title="trait core::convert::Into">Into</a><U> for T <spanclass="where fmt-newline">where<br> U: <aclass="trait"href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html"title="trait core::convert::From">From</a><T>, </span></code><ahref='#impl-Into%3CU%3E'class='anchor'></a><aclass='srclink'href='https://doc.rust-lang.org/nightly/src/core/convert.rs.html#543-548'title='goto source code'>[src]</a></h3><divclass='impl-items'><h4id='method.into'class="method hidden"><codeid='into.v'>fn <ahref='https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into'class='fnname'>into</a>(self) -> U</code><aclass='srclink'href='https://doc.rust-lang.org/nightly/src/core/convert.rs.html#545-547'title='goto source code'>[src]</a></h4><divclass='docblock hidden'><p>Performs the conversion.</p>
</div></div><h3id='impl-TryInto%3CU%3E'class='impl'><codeclass='in-band'>impl<T, U><aclass="trait"href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html"title="trait core::convert::TryInto">TryInto</a><U> for T <spanclass="where fmt-newline">where<br> U: <aclass="trait"href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html"title="trait core::convert::TryFrom">TryFrom</a><T>, </span></code><ahref='#impl-TryInto%3CU%3E'class='anchor'></a><aclass='srclink'href='https://doc.rust-lang.org/nightly/src/core/convert.rs.html#559-566'title='goto source code'>[src]</a></h3><divclass='impl-items'><h4id='associatedtype.Error-1'class="type"><codeid='Error.t-1'>type <ahref='https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error'class="type">Error</a> = <U as <aclass="trait"href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html"title="trait core::convert::TryFrom">TryFrom</a><T>>::<aclass="type"href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error"title="type core::convert::TryFrom::Error">Error</a></code></h4><divclass='docblock'><p>The type returned in the event of a conversion error.</p>
</div><h4id='method.try_into'class="method hidden"><codeid='try_into.v'>fn <ahref='https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into'class='fnname'>try_into</a>(self) -><aclass="enum"href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html"title="enum core::result::Result">Result</a><U, <U as <aclass="trait"href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html"title="trait core::convert::TryFrom">TryFrom</a><T>>::<aclass="type"href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error"title="type core::convert::TryFrom::Error">Error</a>></code><aclass='srclink'href='https://doc.rust-lang.org/nightly/src/core/convert.rs.html#563-565'title='goto source code'>[src]</a></h4><divclass='docblock hidden'><p>Performs the conversion.</p>
</div></div><h3id='impl-Borrow%3CT%3E'class='impl'><codeclass='in-band'>impl<T><aclass="trait"href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html"title="trait core::borrow::Borrow">Borrow</a><T> for T <spanclass="where fmt-newline">where<br> T: ?<aclass="trait"href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"title="trait core::marker::Sized">Sized</a>, </span></code><ahref='#impl-Borrow%3CT%3E'class='anchor'></a><aclass='srclink'href='https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213-215'title='goto source code'>[src]</a></h3><divclass='impl-items'><h4id='method.borrow'class="method hidden"><codeid='borrow.v'>fn <ahref='https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow'class='fnname'>borrow</a>(&self) -><aclass="primitive"href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</code><aclass='srclink'href='https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#214'title='goto source code'>[src]</a></h4><divclass='docblock hidden'><p>Immutably borrows from an owned value. <ahref="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
</div></div><h3id='impl-BorrowMut%3CT%3E'class='impl'><codeclass='in-band'>impl<T><aclass="trait"href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html"title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <spanclass="where fmt-newline">where<br> T: ?<aclass="trait"href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"title="trait core::marker::Sized">Sized</a>, </span></code><ahref='#impl-BorrowMut%3CT%3E'class='anchor'></a><aclass='srclink'href='https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-220'title='goto source code'>[src]</a></h3><divclass='impl-items'><h4id='method.borrow_mut'class="method hidden"><codeid='borrow_mut.v'>fn <ahref='https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut'class='fnname'>borrow_mut</a>(&mut self) -><aclass="primitive"href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</code><aclass='srclink'href='https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219'title='goto source code'>[src]</a></h4><divclass='docblock hidden'><p>Mutably borrows from an owned value. <ahref="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
</div></div><h3id='impl-Any'class='impl'><codeclass='in-band'>impl<T><aclass="trait"href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html"title="trait core::any::Any">Any</a> for T <spanclass="where fmt-newline">where<br> T: 'static + ?<aclass="trait"href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"title="trait core::marker::Sized">Sized</a>, </span></code><ahref='#impl-Any'class='anchor'></a><aclass='srclink'href='https://doc.rust-lang.org/nightly/src/core/any.rs.html#100-102'title='goto source code'>[src]</a></h3><divclass='impl-items'><h4id='method.type_id'class="method hidden"><codeid='type_id.v'>fn <ahref='https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id'class='fnname'>type_id</a>(&self) -><aclass="struct"href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html"title="struct core::any::TypeId">TypeId</a></code><aclass='srclink'href='https://doc.rust-lang.org/nightly/src/core/any.rs.html#101'title='goto source code'>[src]</a></h4><divclass='docblock hidden'><p>Gets the <code>TypeId</code> of <code>self</code>. <ahref="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
</div></div><h3id='impl-ToOwned'class='impl'><codeclass='in-band'>impl<T><aclass="trait"href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html"title="trait alloc::borrow::ToOwned">ToOwned</a> for T <spanclass="where fmt-newline">where<br> T: <aclass="trait"href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html"title="trait core::clone::Clone">Clone</a>, </span></code><ahref='#impl-ToOwned'class='anchor'></a><aclass='srclink'href='https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#81-92'title='goto source code'>[src]</a></h3><divclass='impl-items'><h4id='associatedtype.Owned'class="type"><codeid='Owned.t'>type <ahref='https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned'class="type">Owned</a> = T</code></h4><divclass='docblock'><p>The resulting type after obtaining ownership.</p>
</div><h4id='method.to_owned'class="method hidden"><codeid='to_owned.v'>fn <ahref='https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned'class='fnname'>to_owned</a>(&self) -> T</code><aclass='srclink'href='https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#85-87'title='goto source code'>[src]</a></h4><divclass='docblock hidden'><p>Creates owned data from borrowed data, usually by cloning. <ahref="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
</div><h4id='method.clone_into'class="method hidden"><codeid='clone_into.v'>fn <ahref='https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into'class='fnname'>clone_into</a>(&self, target: <aclass="primitive"href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</code><aclass='srclink'href='https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89-91'title='goto source code'>[src]</a></h4><divclass='stability hidden'><divclass='stab unstable'><details><summary><spanclass='emoji'>🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</summary><p>recently added</p>
</details></div></div><divclass='docblock hidden'><p>Uses borrowed data to replace owned data, usually by cloning. <ahref="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
</div></div></div></section><sectionid="search"class="content hidden"></section><sectionclass="footer"></section><asideid="help"class="hidden"><div><h1class="hidden">Help</h1><divclass="shortcuts"><h2>Keyboard Shortcuts</h2><dl><dt><kbd>?</kbd></dt><dd>Show this help dialog</dd><dt><kbd>S</kbd></dt><dd>Focus the search field</dd><dt><kbd>↑</kbd></dt><dd>Move up in search results</dd><dt><kbd>↓</kbd></dt><dd>Move down in search results</dd><dt><kbd>↹</kbd></dt><dd>Switch tab</dd><dt><kbd>⏎</kbd></dt><dd>Go to active search result</dd><dt><kbd>+</kbd></dt><dd>Expand all sections</dd><dt><kbd>-</kbd></dt><dd>Collapse all sections</dd></dl></div><divclass="infos"><h2>Search Tricks</h2><p>Prefix searches with a type followed by a colon (e.g., <code>fn:</code>) to restrict the search to a given type.</p><p>Accepted types are: <code>fn</code>, <code>mod</code>, <code>struct</code>, <code>enum</code>, <code>trait</code>, <code>type</code>, <code>macro</code>, and <code>const</code>.</p><p>Search functions by type signature (e.g., <code>vec -> usize</code> or <code>* -> vec</code>)</p><p>Search multiple things at once by splitting your query with comma (e.g., <code>str,u8</code> or <code>String,struct:Vec,test</code>)</p></div></div></aside><script>window.rootPath="../../../";window.currentCrate="cranelift_codegen";</script><scriptsrc="../../../aliases.js"></script><scriptsrc="../../../main.js"></script><scriptdefersrc="../../../search-index.js"></script></body></html>