<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <div class="moz-cite-prefix">On 09/27/2017 04:01 PM, Jessica
      Paquette via llvm-dev wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:E7727D21-7B51-437F-82F8-303CECD4693F@apple.com">
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      Hi Davide,
      <div class=""><br class="">
      </div>
      <div class="">Thanks! I think that this is a really great thing to
        be pushing forward in general.<br class="">
        <div class=""><br class="">
        </div>
        <div class="">
          <blockquote type="cite" class=""><span class="" style="float:
              none; display: inline !important;">That said, do we really
              want encapsulate the logic for finding</span><br class="">
            <span class="" style="float: none; display: inline
              !important;">candidates into an interface? It's unclear
              whether it should live but</span><br class="">
            <span class="" style="float: none; display: inline
              !important;">it seems much more akin to the stuff living
              in Transforms/Utils than a</span><br class="">
            <span class="" style="float: none; display: inline
              !important;">proper interface.</span><br class="">
            <span class="" style="float: none; display: inline
              !important;">So, IMHO it's much more suitable for an
              helper/utility.</span></blockquote>
          <div class=""><br class="">
          </div>
          This sounds good to me. We could probably simplify it down to
          a utility that either</div>
        <div class=""><br class="">
        </div>
        <div class="">- Finds all the repeated sequences in the program
          and returns them to the given outliner, which then applies its
          cost model to it</div>
        <div class="">- Takes in a (possibly optional) cost model
          function, finds all repeated sequences that satisfy that
          model, and then returns those sequences. If no model is
          provided, then it will return all sequences.</div>
      </div>
    </blockquote>
    I'll just note that this really sounds like an iterator over
    sequences.  Could you arrange it that way?  That would allow the
    cost modelling to be done externally to the sequence enumeration
    while still allowing early exits.  <br>
    <blockquote type="cite"
      cite="mid:E7727D21-7B51-437F-82F8-303CECD4693F@apple.com">
      <div class="">
        <div class=""><br class="">
        </div>
        <div class="">
          <blockquote type="cite" class=""><span class="" style="float:
              none; display: inline !important;">For what it concerns
              `mapInstructions()` [please correct me if I'm wrong].</span><br
              class="">
            <span class="" style="float: none; display: inline
              !important;">This bit of the interface should be
              responsible for value numbering</span><br class="">
            <span class="" style="float: none; display: inline
              !important;">the instructions, as far as I can tell.</span></blockquote>
          <br class="">
        </div>
        <div class="">That’s correct. </div>
        <div class=""><br class="">
        </div>
        <div class="">
          <blockquote type="cite" class=""><span class="" style="float:
              none; display: inline !important;">To the best of my
              understanding the way your outliner value numbers</span><br
              class="">
            <span class="" style="float: none; display: inline
              !important;">using a nominal approach, i.e. two
              instructions get the same value</span><br class="">
            <span class="" style="float: none; display: inline
              !important;">number if their string representation is the
              same (or something like</span><br class="">
            <span class="" style="float: none; display: inline
              !important;">that).</span></blockquote>
        </div>
        <div class=""><br class="">
        </div>
        <div class="">Yep. They have to match exactly.</div>
        <div class=""><br class="">
        </div>
        <div class="">
          <div class="">
            <blockquote type="cite" class=""><span class=""
                style="float: none; display: inline !important;">So, I
                wonder whether you plan to enhance the logic for value
                numbering</span><br class="">
              <span class="" style="float: none; display: inline
                !important;">in your current scheme. If you do, and you
                plan to share more code</span><br class="">
              <span class="" style="float: none; display: inline
                !important;">between IR and MI outliner, then it's a
                good idea I guess to have a</span><br class="">
              <span class="" style="float: none; display: inline
                !important;">common interface (I'd love to hear your
                thoughts on this one).</span></blockquote>
            <div class=""><br class="">
            </div>
            Absolutely. There are plenty of opportunities that the
            MachineOutliner misses due to simple things like register
            allocation, on top of things like the example you gave. A
            more powerful scheme, and moving the MachineOutliner
            pre-regalloc would be highly beneficial. Having a common
            interface here would be great. (This would be a really
            interesting way to analyze the overall structure of programs
            as well.)</div>
          <div class=""><br class="">
          </div>
          <div class="">- Jessica</div>
          <div class=""><br class="">
          </div>
          <div class="">
            <div class="">
              <div>
                <blockquote type="cite" class="">
                  <div class="">On Sep 27, 2017, at 3:23 PM, Davide
                    Italiano <<a href="mailto:davide@freebsd.org"
                      class="" moz-do-not-send="true">davide@freebsd.org</a>>
                    wrote:</div>
                  <br class="Apple-interchange-newline">
                  <div class=""><span style="font-family: Helvetica;
                      font-size: 12px; font-style: normal;
                      font-variant-caps: normal; font-weight: normal;
                      letter-spacing: normal; text-align: start;
                      text-indent: 0px; text-transform: none;
                      white-space: normal; word-spacing: 0px;
                      -webkit-text-stroke-width: 0px; float: none;
                      display: inline !important;" class="">On Wed, Sep
                      27, 2017 at 9:28 AM, Jessica Paquette via llvm-dev</span><br
                      style="font-family: Helvetica; font-size: 12px;
                      font-style: normal; font-variant-caps: normal;
                      font-weight: normal; letter-spacing: normal;
                      text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width:
                      0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class=""><</span><a
                      href="mailto:llvm-dev@lists.llvm.org"
                      style="font-family: Helvetica; font-size: 12px;
                      font-style: normal; font-variant-caps: normal;
                      font-weight: normal; letter-spacing: normal;
                      orphans: auto; text-align: start; text-indent:
                      0px; text-transform: none; white-space: normal;
                      widows: auto; word-spacing: 0px;
                      -webkit-text-size-adjust: auto;
                      -webkit-text-stroke-width: 0px;" class=""
                      moz-do-not-send="true">llvm-dev@lists.llvm.org</a><span
                      style="font-family: Helvetica; font-size: 12px;
                      font-style: normal; font-variant-caps: normal;
                      font-weight: normal; letter-spacing: normal;
                      text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">>
                      wrote:</span><br style="font-family: Helvetica;
                      font-size: 12px; font-style: normal;
                      font-variant-caps: normal; font-weight: normal;
                      letter-spacing: normal; text-align: start;
                      text-indent: 0px; text-transform: none;
                      white-space: normal; word-spacing: 0px;
                      -webkit-text-stroke-width: 0px;" class="">
                    <blockquote type="cite" style="font-family:
                      Helvetica; font-size: 12px; font-style: normal;
                      font-variant-caps: normal; font-weight: normal;
                      letter-spacing: normal; orphans: auto; text-align:
                      start; text-indent: 0px; text-transform: none;
                      white-space: normal; widows: auto; word-spacing:
                      0px; -webkit-text-size-adjust: auto;
                      -webkit-text-stroke-width: 0px;" class=""><br
                        class="">
                      I think that, given previous discussion on the
                      topic, we might want a split<br class="">
                      like this:<br class="">
                      <br class="">
                      (1) Search structure<br class="">
                      <br class="">
                      Suffix tree or suffix array.<br class="">
                      <br class="">
                      (2) Numbering/mapping/congruence scheme<br
                        class="">
                      <br class="">
                      Every outliner should implement a function that
                      maps instructions (or<br class="">
                      whatever structure you want to outline, crazy
                      thoughts…) to integers. That<br class="">
                      should be passed to the search structure, which
                      will return a list of<br class="">
                      repeated sequences.<br class="">
                      <br class="">
                      The MachineOutliner currently has an
                      “InstructionMapper” struct in it. I<br class="">
                      think we can probably build on that struct so that
                      we can choose different<br class="">
                      mapping schemes.<br class="">
                      <br class="">
                      (3) Cost model/candidate selection scheme<br
                        class="">
                      <br class="">
                      Every outliner should implement a function that
                      returns the outlining cost<br class="">
                      or benefit of a candidate. In the MachineOutliner,
                      this is a joint effort<br class="">
                      between the pass and the target.<br class="">
                      <br class="">
                      (4) Outlining scheme<br class="">
                      <br class="">
                      Every outliner should implement a function that
                      actually performs outlining.<br class="">
                      That is, we should have a function that replaces
                      each instance of a repeated<br class="">
                      sequence of instructions with a call to a
                      newly-created function. In the<br class="">
                      MachineOutliner, the method by which we do this is
                      decided on by the target.<br class="">
                      <br class="">
                      So, we at the very least might want an interface
                      that implements something<br class="">
                      like<br class="">
                      <br class="">
                      unsigned mapInstructions(…);<br class="">
                      unsigned getOutliningCost(…);<br class="">
                      unsigned findCandidates(…);<br class="">
                      bool outline(…);<br class="">
                      <br class="">
                    </blockquote>
                    <br style="font-family: Helvetica; font-size: 12px;
                      font-style: normal; font-variant-caps: normal;
                      font-weight: normal; letter-spacing: normal;
                      text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width:
                      0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">Hi
                      Jessica, I tend to agree we should try to maximize
                      code reuse in</span><br style="font-family:
                      Helvetica; font-size: 12px; font-style: normal;
                      font-variant-caps: normal; font-weight: normal;
                      letter-spacing: normal; text-align: start;
                      text-indent: 0px; text-transform: none;
                      white-space: normal; word-spacing: 0px;
                      -webkit-text-stroke-width: 0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">this
                      context, and I think yours is a good step forward.
                      In particular,</span><br style="font-family:
                      Helvetica; font-size: 12px; font-style: normal;
                      font-variant-caps: normal; font-weight: normal;
                      letter-spacing: normal; text-align: start;
                      text-indent: 0px; text-transform: none;
                      white-space: normal; word-spacing: 0px;
                      -webkit-text-stroke-width: 0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">I'm
                      particularly confident the `findCandidates()` bits
                      should be</span><br style="font-family: Helvetica;
                      font-size: 12px; font-style: normal;
                      font-variant-caps: normal; font-weight: normal;
                      letter-spacing: normal; text-align: start;
                      text-indent: 0px; text-transform: none;
                      white-space: normal; word-spacing: 0px;
                      -webkit-text-stroke-width: 0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">split.</span><br
                      style="font-family: Helvetica; font-size: 12px;
                      font-style: normal; font-variant-caps: normal;
                      font-weight: normal; letter-spacing: normal;
                      text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width:
                      0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">That
                      said, do we really want encapsulate the logic for
                      finding</span><br style="font-family: Helvetica;
                      font-size: 12px; font-style: normal;
                      font-variant-caps: normal; font-weight: normal;
                      letter-spacing: normal; text-align: start;
                      text-indent: 0px; text-transform: none;
                      white-space: normal; word-spacing: 0px;
                      -webkit-text-stroke-width: 0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">candidates
                      into an interface? It's unclear whether it should
                      live but</span><br style="font-family: Helvetica;
                      font-size: 12px; font-style: normal;
                      font-variant-caps: normal; font-weight: normal;
                      letter-spacing: normal; text-align: start;
                      text-indent: 0px; text-transform: none;
                      white-space: normal; word-spacing: 0px;
                      -webkit-text-stroke-width: 0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">it
                      seems much more akin to the stuff living in
                      Transforms/Utils than a</span><br
                      style="font-family: Helvetica; font-size: 12px;
                      font-style: normal; font-variant-caps: normal;
                      font-weight: normal; letter-spacing: normal;
                      text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width:
                      0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">proper
                      interface.</span><br style="font-family:
                      Helvetica; font-size: 12px; font-style: normal;
                      font-variant-caps: normal; font-weight: normal;
                      letter-spacing: normal; text-align: start;
                      text-indent: 0px; text-transform: none;
                      white-space: normal; word-spacing: 0px;
                      -webkit-text-stroke-width: 0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">So,
                      IMHO it's much more suitable for an
                      helper/utility.</span><br style="font-family:
                      Helvetica; font-size: 12px; font-style: normal;
                      font-variant-caps: normal; font-weight: normal;
                      letter-spacing: normal; text-align: start;
                      text-indent: 0px; text-transform: none;
                      white-space: normal; word-spacing: 0px;
                      -webkit-text-stroke-width: 0px;" class="">
                    <br style="font-family: Helvetica; font-size: 12px;
                      font-style: normal; font-variant-caps: normal;
                      font-weight: normal; letter-spacing: normal;
                      text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width:
                      0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">For
                      what it concerns `mapInstructions()` [please
                      correct me if I'm wrong].</span><br
                      style="font-family: Helvetica; font-size: 12px;
                      font-style: normal; font-variant-caps: normal;
                      font-weight: normal; letter-spacing: normal;
                      text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width:
                      0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">This
                      bit of the interface should be responsible for
                      value numbering</span><br style="font-family:
                      Helvetica; font-size: 12px; font-style: normal;
                      font-variant-caps: normal; font-weight: normal;
                      letter-spacing: normal; text-align: start;
                      text-indent: 0px; text-transform: none;
                      white-space: normal; word-spacing: 0px;
                      -webkit-text-stroke-width: 0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">the
                      instructions, as far as I can tell.</span><br
                      style="font-family: Helvetica; font-size: 12px;
                      font-style: normal; font-variant-caps: normal;
                      font-weight: normal; letter-spacing: normal;
                      text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width:
                      0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">To
                      the best of my understanding the way your outliner
                      value numbers</span><br style="font-family:
                      Helvetica; font-size: 12px; font-style: normal;
                      font-variant-caps: normal; font-weight: normal;
                      letter-spacing: normal; text-align: start;
                      text-indent: 0px; text-transform: none;
                      white-space: normal; word-spacing: 0px;
                      -webkit-text-stroke-width: 0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">using
                      a nominal approach, i.e. two instructions get the
                      same value</span><br style="font-family:
                      Helvetica; font-size: 12px; font-style: normal;
                      font-variant-caps: normal; font-weight: normal;
                      letter-spacing: normal; text-align: start;
                      text-indent: 0px; text-transform: none;
                      white-space: normal; word-spacing: 0px;
                      -webkit-text-stroke-width: 0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">number
                      if their string representation is the same (or
                      something like</span><br style="font-family:
                      Helvetica; font-size: 12px; font-style: normal;
                      font-variant-caps: normal; font-weight: normal;
                      letter-spacing: normal; text-align: start;
                      text-indent: 0px; text-transform: none;
                      white-space: normal; word-spacing: 0px;
                      -webkit-text-stroke-width: 0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">that).</span><br
                      style="font-family: Helvetica; font-size: 12px;
                      font-style: normal; font-variant-caps: normal;
                      font-weight: normal; letter-spacing: normal;
                      text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width:
                      0px;" class="">
                    <br style="font-family: Helvetica; font-size: 12px;
                      font-style: normal; font-variant-caps: normal;
                      font-weight: normal; letter-spacing: normal;
                      text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width:
                      0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">With
                      the notion above,</span><br style="font-family:
                      Helvetica; font-size: 12px; font-style: normal;
                      font-variant-caps: normal; font-weight: normal;
                      letter-spacing: normal; text-align: start;
                      text-indent: 0px; text-transform: none;
                      white-space: normal; word-spacing: 0px;
                      -webkit-text-stroke-width: 0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">xorl
                      %eax %eax</span><br style="font-family: Helvetica;
                      font-size: 12px; font-style: normal;
                      font-variant-caps: normal; font-weight: normal;
                      letter-spacing: normal; text-align: start;
                      text-indent: 0px; text-transform: none;
                      white-space: normal; word-spacing: 0px;
                      -webkit-text-stroke-width: 0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">movl
                      %eax, $0</span><br style="font-family: Helvetica;
                      font-size: 12px; font-style: normal;
                      font-variant-caps: normal; font-weight: normal;
                      letter-spacing: normal; text-align: start;
                      text-indent: 0px; text-transform: none;
                      white-space: normal; word-spacing: 0px;
                      -webkit-text-stroke-width: 0px;" class="">
                    <br style="font-family: Helvetica; font-size: 12px;
                      font-style: normal; font-variant-caps: normal;
                      font-weight: normal; letter-spacing: normal;
                      text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width:
                      0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">aren't
                      really considered equivalent (although, in
                      practice, they are).</span><br style="font-family:
                      Helvetica; font-size: 12px; font-style: normal;
                      font-variant-caps: normal; font-weight: normal;
                      letter-spacing: normal; text-align: start;
                      text-indent: 0px; text-transform: none;
                      white-space: normal; word-spacing: 0px;
                      -webkit-text-stroke-width: 0px;" class="">
                    <br style="font-family: Helvetica; font-size: 12px;
                      font-style: normal; font-variant-caps: normal;
                      font-weight: normal; letter-spacing: normal;
                      text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width:
                      0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">The
                      way I imagined outlining to work at the IR level
                      (and how I once</span><br style="font-family:
                      Helvetica; font-size: 12px; font-style: normal;
                      font-variant-caps: normal; font-weight: normal;
                      letter-spacing: normal; text-align: start;
                      text-indent: 0px; text-transform: none;
                      white-space: normal; word-spacing: 0px;
                      -webkit-text-stroke-width: 0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">discussed
                      with Dan) is leveraging the result of a value
                      number</span><br style="font-family: Helvetica;
                      font-size: 12px; font-style: normal;
                      font-variant-caps: normal; font-weight: normal;
                      letter-spacing: normal; text-align: start;
                      text-indent: 0px; text-transform: none;
                      white-space: normal; word-spacing: 0px;
                      -webkit-text-stroke-width: 0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">analysis
                      (NewGVN) to assign numbers.</span><br
                      style="font-family: Helvetica; font-size: 12px;
                      font-style: normal; font-variant-caps: normal;
                      font-weight: normal; letter-spacing: normal;
                      text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width:
                      0px;" class="">
                    <br style="font-family: Helvetica; font-size: 12px;
                      font-style: normal; font-variant-caps: normal;
                      font-weight: normal; letter-spacing: normal;
                      text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width:
                      0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">While
                      the problem NewGVN solves is that of finding all
                      the Herbrand</span><br style="font-family:
                      Helvetica; font-size: 12px; font-style: normal;
                      font-variant-caps: normal; font-weight: normal;
                      letter-spacing: normal; text-align: start;
                      text-indent: 0px; text-transform: none;
                      white-space: normal; word-spacing: 0px;
                      -webkit-text-stroke-width: 0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">equivalences
                      (structural equivalence, same operation and
                      operand</span><br style="font-family: Helvetica;
                      font-size: 12px; font-style: normal;
                      font-variant-caps: normal; font-weight: normal;
                      letter-spacing: normal; text-align: start;
                      text-indent: 0px; text-transform: none;
                      white-space: normal; word-spacing: 0px;
                      -webkit-text-stroke-width: 0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">structurally
                      congruent), it also does a canonicalization step
                      calling</span><br style="font-family: Helvetica;
                      font-size: 12px; font-style: normal;
                      font-variant-caps: normal; font-weight: normal;
                      letter-spacing: normal; text-align: start;
                      text-indent: 0px; text-transform: none;
                      white-space: normal; word-spacing: 0px;
                      -webkit-text-stroke-width: 0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">InstSimplify
                      to canonicalize (so, in this sense it catches more</span><br
                      style="font-family: Helvetica; font-size: 12px;
                      font-style: normal; font-variant-caps: normal;
                      font-weight: normal; letter-spacing: normal;
                      text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width:
                      0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">stuffs,
                      e.g.:</span><br style="font-family: Helvetica;
                      font-size: 12px; font-style: normal;
                      font-variant-caps: normal; font-weight: normal;
                      letter-spacing: normal; text-align: start;
                      text-indent: 0px; text-transform: none;
                      white-space: normal; word-spacing: 0px;
                      -webkit-text-stroke-width: 0px;" class="">
                    <br style="font-family: Helvetica; font-size: 12px;
                      font-style: normal; font-variant-caps: normal;
                      font-weight: normal; letter-spacing: normal;
                      text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width:
                      0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">%x
                      = add %a, 0</span><br style="font-family:
                      Helvetica; font-size: 12px; font-style: normal;
                      font-variant-caps: normal; font-weight: normal;
                      letter-spacing: normal; text-align: start;
                      text-indent: 0px; text-transform: none;
                      white-space: normal; word-spacing: 0px;
                      -webkit-text-stroke-width: 0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">%y
                      = sub %b, 0</span><br style="font-family:
                      Helvetica; font-size: 12px; font-style: normal;
                      font-variant-caps: normal; font-weight: normal;
                      letter-spacing: normal; text-align: start;
                      text-indent: 0px; text-transform: none;
                      white-space: normal; word-spacing: 0px;
                      -webkit-text-stroke-width: 0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">not
                      equivalent</span><br style="font-family:
                      Helvetica; font-size: 12px; font-style: normal;
                      font-variant-caps: normal; font-weight: normal;
                      letter-spacing: normal; text-align: start;
                      text-indent: 0px; text-transform: none;
                      white-space: normal; word-spacing: 0px;
                      -webkit-text-stroke-width: 0px;" class="">
                    <br style="font-family: Helvetica; font-size: 12px;
                      font-style: normal; font-variant-caps: normal;
                      font-weight: normal; letter-spacing: normal;
                      text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width:
                      0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">instSimplify(%y)
                      -> add %a, 0</span><br style="font-family:
                      Helvetica; font-size: 12px; font-style: normal;
                      font-variant-caps: normal; font-weight: normal;
                      letter-spacing: normal; text-align: start;
                      text-indent: 0px; text-transform: none;
                      white-space: normal; word-spacing: 0px;
                      -webkit-text-stroke-width: 0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">now
                      they're equivalent.</span><br style="font-family:
                      Helvetica; font-size: 12px; font-style: normal;
                      font-variant-caps: normal; font-weight: normal;
                      letter-spacing: normal; text-align: start;
                      text-indent: 0px; text-transform: none;
                      white-space: normal; word-spacing: 0px;
                      -webkit-text-stroke-width: 0px;" class="">
                    <br style="font-family: Helvetica; font-size: 12px;
                      font-style: normal; font-variant-caps: normal;
                      font-weight: normal; letter-spacing: normal;
                      text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width:
                      0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">Note:
                      The current IR outlliner doesn't really use the
                      approach I just</span><br style="font-family:
                      Helvetica; font-size: 12px; font-style: normal;
                      font-variant-caps: normal; font-weight: normal;
                      letter-spacing: normal; text-align: start;
                      text-indent: 0px; text-transform: none;
                      white-space: normal; word-spacing: 0px;
                      -webkit-text-stroke-width: 0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">described,
                      yet, but it's not hard to imagine extending (or
                      rewriting</span><br style="font-family: Helvetica;
                      font-size: 12px; font-style: normal;
                      font-variant-caps: normal; font-weight: normal;
                      letter-spacing: normal; text-align: start;
                      text-indent: 0px; text-transform: none;
                      white-space: normal; word-spacing: 0px;
                      -webkit-text-stroke-width: 0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">it
                      to use a real Global Value number analysis to get
                      instructions that</span><br style="font-family:
                      Helvetica; font-size: 12px; font-style: normal;
                      font-variant-caps: normal; font-weight: normal;
                      letter-spacing: normal; text-align: start;
                      text-indent: 0px; text-transform: none;
                      white-space: normal; word-spacing: 0px;
                      -webkit-text-stroke-width: 0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">are
                      equivalent, for some definition of  structural
                      equivalency)</span><br style="font-family:
                      Helvetica; font-size: 12px; font-style: normal;
                      font-variant-caps: normal; font-weight: normal;
                      letter-spacing: normal; text-align: start;
                      text-indent: 0px; text-transform: none;
                      white-space: normal; word-spacing: 0px;
                      -webkit-text-stroke-width: 0px;" class="">
                    <br style="font-family: Helvetica; font-size: 12px;
                      font-style: normal; font-variant-caps: normal;
                      font-weight: normal; letter-spacing: normal;
                      text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width:
                      0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">So,
                      I wonder whether you plan to enhance the logic for
                      value numbering</span><br style="font-family:
                      Helvetica; font-size: 12px; font-style: normal;
                      font-variant-caps: normal; font-weight: normal;
                      letter-spacing: normal; text-align: start;
                      text-indent: 0px; text-transform: none;
                      white-space: normal; word-spacing: 0px;
                      -webkit-text-stroke-width: 0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">in
                      your current scheme. If you do, and you plan to
                      share more code</span><br style="font-family:
                      Helvetica; font-size: 12px; font-style: normal;
                      font-variant-caps: normal; font-weight: normal;
                      letter-spacing: normal; text-align: start;
                      text-indent: 0px; text-transform: none;
                      white-space: normal; word-spacing: 0px;
                      -webkit-text-stroke-width: 0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">between
                      IR and MI outliner, then it's a good idea I guess
                      to have a</span><br style="font-family: Helvetica;
                      font-size: 12px; font-style: normal;
                      font-variant-caps: normal; font-weight: normal;
                      letter-spacing: normal; text-align: start;
                      text-indent: 0px; text-transform: none;
                      white-space: normal; word-spacing: 0px;
                      -webkit-text-stroke-width: 0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">common
                      interface (I'd love to hear your thoughts on this
                      one).</span><br style="font-family: Helvetica;
                      font-size: 12px; font-style: normal;
                      font-variant-caps: normal; font-weight: normal;
                      letter-spacing: normal; text-align: start;
                      text-indent: 0px; text-transform: none;
                      white-space: normal; word-spacing: 0px;
                      -webkit-text-stroke-width: 0px;" class="">
                    <br style="font-family: Helvetica; font-size: 12px;
                      font-style: normal; font-variant-caps: normal;
                      font-weight: normal; letter-spacing: normal;
                      text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width:
                      0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">About
                      the `getOutliningCost()` API, what do you think to
                      do in the MI outliner?</span><br
                      style="font-family: Helvetica; font-size: 12px;
                      font-style: normal; font-variant-caps: normal;
                      font-weight: normal; letter-spacing: normal;
                      text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width:
                      0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">Currently,
                      if I remember correctly, (almost) all instructions
                      have</span><br style="font-family: Helvetica;
                      font-size: 12px; font-style: normal;
                      font-variant-caps: normal; font-weight: normal;
                      letter-spacing: normal; text-align: start;
                      text-indent: 0px; text-transform: none;
                      white-space: normal; word-spacing: 0px;
                      -webkit-text-stroke-width: 0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">unit
                      cost except for something.</span><br
                      style="font-family: Helvetica; font-size: 12px;
                      font-style: normal; font-variant-caps: normal;
                      font-weight: normal; letter-spacing: normal;
                      text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width:
                      0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">It's
                      not unreasonable to think this model will evolve.
                      A relatively</span><br style="font-family:
                      Helvetica; font-size: 12px; font-style: normal;
                      font-variant-caps: normal; font-weight: normal;
                      letter-spacing: normal; text-align: start;
                      text-indent: 0px; text-transform: none;
                      white-space: normal; word-spacing: 0px;
                      -webkit-text-stroke-width: 0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">obvious
                      improvement might be that of taking in account the
                      length</span><br style="font-family: Helvetica;
                      font-size: 12px; font-style: normal;
                      font-variant-caps: normal; font-weight: normal;
                      letter-spacing: normal; text-align: start;
                      text-indent: 0px; text-transform: none;
                      white-space: normal; word-spacing: 0px;
                      -webkit-text-stroke-width: 0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">encoding
                      for the target architecture when outlining. The IR
                      outliner</span><br style="font-family: Helvetica;
                      font-size: 12px; font-style: normal;
                      font-variant-caps: normal; font-weight: normal;
                      letter-spacing: normal; text-align: start;
                      text-indent: 0px; text-transform: none;
                      white-space: normal; word-spacing: 0px;
                      -webkit-text-stroke-width: 0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">uses
                      TargetTransformInfo to do estimation costs. I
                      think we may want</span><br style="font-family:
                      Helvetica; font-size: 12px; font-style: normal;
                      font-variant-caps: normal; font-weight: normal;
                      letter-spacing: normal; text-align: start;
                      text-indent: 0px; text-transform: none;
                      white-space: normal; word-spacing: 0px;
                      -webkit-text-stroke-width: 0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">to
                      evaluate whether (or not) it's feasible to have a
                      base class for</span><br style="font-family:
                      Helvetica; font-size: 12px; font-style: normal;
                      font-variant-caps: normal; font-weight: normal;
                      letter-spacing: normal; text-align: start;
                      text-indent: 0px; text-transform: none;
                      white-space: normal; word-spacing: 0px;
                      -webkit-text-stroke-width: 0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">the
                      cost model that doesn't introduce too much
                      boilerplate, or whether</span><br
                      style="font-family: Helvetica; font-size: 12px;
                      font-style: normal; font-variant-caps: normal;
                      font-weight: normal; letter-spacing: normal;
                      text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width:
                      0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">we
                      should bite the bullet and pay a small cost in
                      duplication for this</span><br style="font-family:
                      Helvetica; font-size: 12px; font-style: normal;
                      font-variant-caps: normal; font-weight: normal;
                      letter-spacing: normal; text-align: start;
                      text-indent: 0px; text-transform: none;
                      white-space: normal; word-spacing: 0px;
                      -webkit-text-stroke-width: 0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">logic
                      across the two outliners.</span><br
                      style="font-family: Helvetica; font-size: 12px;
                      font-style: normal; font-variant-caps: normal;
                      font-weight: normal; letter-spacing: normal;
                      text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width:
                      0px;" class="">
                    <br style="font-family: Helvetica; font-size: 12px;
                      font-style: normal; font-variant-caps: normal;
                      font-weight: normal; letter-spacing: normal;
                      text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width:
                      0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">Thanks,</span><br
                      style="font-family: Helvetica; font-size: 12px;
                      font-style: normal; font-variant-caps: normal;
                      font-weight: normal; letter-spacing: normal;
                      text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width:
                      0px;" class="">
                    <br style="font-family: Helvetica; font-size: 12px;
                      font-style: normal; font-variant-caps: normal;
                      font-weight: normal; letter-spacing: normal;
                      text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width:
                      0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">--</span><br
                      style="font-family: Helvetica; font-size: 12px;
                      font-style: normal; font-variant-caps: normal;
                      font-weight: normal; letter-spacing: normal;
                      text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width:
                      0px;" class="">
                    <span style="font-family: Helvetica; font-size:
                      12px; font-style: normal; font-variant-caps:
                      normal; font-weight: normal; letter-spacing:
                      normal; text-align: start; text-indent: 0px;
                      text-transform: none; white-space: normal;
                      word-spacing: 0px; -webkit-text-stroke-width: 0px;
                      float: none; display: inline !important;" class="">Davide</span></div>
                </blockquote>
              </div>
              <br class="">
            </div>
          </div>
        </div>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
LLVM Developers mailing list
<a class="moz-txt-link-abbreviated" href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>
<a class="moz-txt-link-freetext" href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a>
</pre>
    </blockquote>
    <p><br>
    </p>
  </body>
</html>