<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <p><br>
    </p>
    <br>
    <div class="moz-cite-prefix">On 01/31/2017 09:30 PM, Mehdi Amini via
      llvm-dev wrote:<br>
    </div>
    <blockquote
      cite="mid:07EDC924-4AC8-4F7B-9736-09E2D8F4E25D@apple.com"
      type="cite">
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      <div>
        <div style="direction: inherit;"><br>
        </div>
        <br>
        Sent from my iPhone</div>
      <div><br>
        On Jan 31, 2017, at 7:27 PM, Tian, Xinmin <<a
          moz-do-not-send="true" href="mailto:xinmin.tian@intel.com">xinmin.tian@intel.com</a>>
        wrote:<br>
        <br>
      </div>
      <blockquote type="cite">
        <div><span>Remember that,  the prepare-phase is invoked in the
            FE or right after FE, inlining is not happening, that is why
            we don't call it "pass".  Chandler made a good point for
            this case a long time back.  </span><br>
          <div style="direction: inherit;"><br>
          </div>
        </div>
      </blockquote>
      <div style="direction: inherit;"><br>
      </div>
      <div style="direction: inherit;">What I was describing is the
        inlining in the optimizer pipeline.</div>
    </blockquote>
    <br>
    FWIW, we only do this for allocas in the entry block, and it would
    be trivial to having the code stop scanning the entry block upon
    hitting some specifically-tagged thing(s).<br>
    <br>
    <blockquote
      cite="mid:07EDC924-4AC8-4F7B-9736-09E2D8F4E25D@apple.com"
      type="cite">
      <div style="direction: inherit;"><br>
      </div>
      <div style="direction: inherit;"><br>
      </div>
      <div style="direction: inherit;"><br>
      </div>
      <blockquote type="cite">
        <div><span></span><span>Hoisting alloca is totally ok.  A new
            alloca is generated during outlining later on for anything
            marked as "private" (so long the "private" information is
            saves in the tag). I thought we talked this in an early
            email.  </span><br>
        </div>
      </blockquote>
      <div style="direction: inherit;"><br>
      </div>
      <div style="direction: inherit;"><br>
      </div>
      <div style="direction: inherit;">Can you describe how (and at
        which point) you get the private for "var"  added to the tag?</div>
    </blockquote>
    <br>
    I don't think this is necessarily the scheme that we'd use for an
    upstream implementation.<br>
    <br>
    Thanks again,<br>
    Hal<br>
    <br>
    <blockquote
      cite="mid:07EDC924-4AC8-4F7B-9736-09E2D8F4E25D@apple.com"
      type="cite">
      <div style="direction: inherit;"><br>
      </div>
      <div style="direction: inherit;"><br>
      </div>
      <div style="direction: inherit;">-- </div>
      <div style="direction: inherit;">Mehdi</div>
      <div style="direction: inherit;"><br>
      </div>
      <blockquote type="cite">
        <div><span></span><br>
          <span>By the way, all concerns you have are all valid, we had
            worked on resolving these issues 10+ years back when we did
            similar things in our compilers. I wouldn't claim we have
            perfect solutions, but we do reasonable good solutions for
            handling general directives and openmp directives.    </span></div>
      </blockquote>
      <blockquote type="cite">
        <div>
          <div style="direction: inherit;"><br>
          </div>
          <span></span><span>Xinmin</span><br>
          <span></span><br>
          <span>-----Original Message-----</span><br>
          <span>From: <a moz-do-not-send="true"
              href="mailto:mehdi.amini@apple.com">mehdi.amini@apple.com</a>
            [<a moz-do-not-send="true"
              href="mailto:mehdi.amini@apple.com">mailto:mehdi.amini@apple.com</a>]
          </span><br>
          <span>Sent: Tuesday, January 31, 2017 7:08 PM</span><br>
          <span>To: Tian, Xinmin <<a moz-do-not-send="true"
              href="mailto:xinmin.tian@intel.com">xinmin.tian@intel.com</a>></span><br>
          <span>Cc: Sanjoy Das <<a moz-do-not-send="true"
              href="mailto:sanjoy@playingwithpointers.com">sanjoy@playingwithpointers.com</a>>;
            Adve, Vikram Sadanand <<a moz-do-not-send="true"
              href="mailto:vadve@illinois.edu">vadve@illinois.edu</a>>;
            <a moz-do-not-send="true"
              href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>;
            <a moz-do-not-send="true"
              href="mailto:llvm-dev-request@lists.llvm.org">llvm-dev-request@lists.llvm.org</a></span><br>
          <span>Subject: Re: [llvm-dev] [RFC] IR-level Region
            Annotations</span><br>
          <span></span><br>
          <span></span><br>
          <blockquote type="cite"><span>On Jan 31, 2017, at 6:48 PM,
              Tian, Xinmin <<a moz-do-not-send="true"
                href="mailto:xinmin.tian@intel.com">xinmin.tian@intel.com</a>>
              wrote:</span><br>
          </blockquote>
          <blockquote type="cite"><span></span><br>
          </blockquote>
          <blockquote type="cite"><span>Let me try this. </span><br>
          </blockquote>
          <blockquote type="cite"><span></span><br>
          </blockquote>
          <blockquote type="cite"><span>You can simply consider the
              prepare-phase (e.g. pre-privatization)  were done in FE
               (actually a library can be used by multiple FEs at LLVM
              IR level),  the region is run with 1 thread,  region
              annotation (scope, single-entry-single-exit) as memory
              barrier conservatively for now (instead of checking
              individual memory dependency, aliasing via tags which is
              the actual implementation is done) marked with region
              intrinsic functions. What optimization will mess up  with
              this region-annotation?  </span><br>
          </blockquote>
          <span></span><br>
          <span>The first thing that comes to my mind is inlining that
            can put the IR in a form that breaks the invariant you tried
            to enforce with your "prepare-phase” (for example by
            hoisting an allocas).</span><br>
          <span></span><br>
          <span>— </span><br>
          <span>Mehdi</span><br>
          <span></span><br>
          <span></span><br>
          <blockquote type="cite"><span></span><br>
          </blockquote>
          <blockquote type="cite"><span></span><br>
          </blockquote>
          <blockquote type="cite"><span>-----Original Message-----</span><br>
          </blockquote>
          <blockquote type="cite"><span>From: <a moz-do-not-send="true"
                href="mailto:mehdi.amini@apple.com">mehdi.amini@apple.com</a>
              [<a moz-do-not-send="true"
                href="mailto:mehdi.amini@apple.com">mailto:mehdi.amini@apple.com</a>]
            </span><br>
          </blockquote>
          <blockquote type="cite"><span>Sent: Tuesday, January 31, 2017
              5:47 PM</span><br>
          </blockquote>
          <blockquote type="cite"><span>To: Tian, Xinmin <<a
                moz-do-not-send="true"
                href="mailto:xinmin.tian@intel.com">xinmin.tian@intel.com</a>></span><br>
          </blockquote>
          <blockquote type="cite"><span>Cc: Sanjoy Das <<a
                moz-do-not-send="true"
                href="mailto:sanjoy@playingwithpointers.com">sanjoy@playingwithpointers.com</a>>;
              Adve, Vikram Sadanand <<a moz-do-not-send="true"
                href="mailto:vadve@illinois.edu">vadve@illinois.edu</a>>;
              <a moz-do-not-send="true"
                href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>;
              <a moz-do-not-send="true"
                href="mailto:llvm-dev-request@lists.llvm.org">llvm-dev-request@lists.llvm.org</a></span><br>
          </blockquote>
          <blockquote type="cite"><span>Subject: Re: [llvm-dev] [RFC]
              IR-level Region Annotations</span><br>
          </blockquote>
          <blockquote type="cite"><span></span><br>
          </blockquote>
          <blockquote type="cite"><span></span><br>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite"><span>On Jan 31, 2017, at 5:38 PM,
                Tian, Xinmin <<a moz-do-not-send="true"
                  href="mailto:xinmin.tian@intel.com">xinmin.tian@intel.com</a>>
                wrote:</span><br>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite"><span></span><br>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite"><span>Ok, but this looks
                        like a “workaround" for your specific use-case,
                        I don’t see how it can scale as a model-agnostic
                        and general-purpose region semantic.</span><br>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite"><span></span><br>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite"><span>I would say it is a design
                trade-off.</span><br>
            </blockquote>
          </blockquote>
          <blockquote type="cite"><span></span><br>
          </blockquote>
          <blockquote type="cite"><span>I’m not sure if we’re talking
              about the same thing here: my understanding at this point
              is that the design trading-off you’re making “simplicity”
              by scarifying “correctness”.</span><br>
          </blockquote>
          <blockquote type="cite"><span></span><br>
          </blockquote>
          <blockquote type="cite"><span>Requiring the IR to stay in what
              you’re calling a “canonical” form in your answer to Sanjoy
              in order to not miscompile a program is not an approach
              that seems compatible with how we deal with the IR
              usually.</span><br>
          </blockquote>
          <blockquote type="cite"><span></span><br>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite"><span>Regardless it is a new
                instruction or an intrinsics with token/tag, it will
                consist of  model-agnostic part and model-non-agnostic
                part. The package comes with a framework for parsing and
                using these intrinsics.  See the reply I had for
                Sanjoy's email. </span><br>
            </blockquote>
          </blockquote>
          <blockquote type="cite"><span></span><br>
          </blockquote>
          <blockquote type="cite"><span>The answer to Sanjoy is not
              really helpful to clarify anything to me. At this point I
              still don’t understand how this is supposed to be correct
              in general.</span><br>
          </blockquote>
          <blockquote type="cite"><span></span><br>
          </blockquote>
          <blockquote type="cite"><span>It would be helpful to have a
              LangRef patch that describes the semantic associated to
              your region intrinsics. Then we may be able to process
              some examples through the formalized description.</span><br>
          </blockquote>
          <blockquote type="cite"><span></span><br>
          </blockquote>
          <blockquote type="cite"><span>— </span><br>
          </blockquote>
          <blockquote type="cite"><span>Mehdi</span><br>
          </blockquote>
          <blockquote type="cite"><span></span><br>
          </blockquote>
          <blockquote type="cite"><span></span><br>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite"><span></span><br>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite"><span>-----Original Message-----</span><br>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite"><span>From: <a
                  moz-do-not-send="true"
                  href="mailto:mehdi.amini@apple.com">mehdi.amini@apple.com</a>
                [<a moz-do-not-send="true"
                  href="mailto:mehdi.amini@apple.com">mailto:mehdi.amini@apple.com</a>]
              </span><br>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite"><span>Sent: Saturday, January 21,
                2017 1:57 PM</span><br>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite"><span>To: Tian, Xinmin <<a
                  moz-do-not-send="true"
                  href="mailto:xinmin.tian@intel.com">xinmin.tian@intel.com</a>></span><br>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite"><span>Cc: Sanjoy Das <<a
                  moz-do-not-send="true"
                  href="mailto:sanjoy@playingwithpointers.com">sanjoy@playingwithpointers.com</a>>;
                Adve, Vikram Sadanand <<a moz-do-not-send="true"
                  href="mailto:vadve@illinois.edu">vadve@illinois.edu</a>>;
                <a moz-do-not-send="true"
                  href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>;
                <a moz-do-not-send="true"
                  href="mailto:llvm-dev-request@lists.llvm.org">llvm-dev-request@lists.llvm.org</a></span><br>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite"><span>Subject: Re: [llvm-dev] [RFC]
                IR-level Region Annotations</span><br>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite"><span></span><br>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite"><span></span><br>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite"><span>On Jan 20, 2017, at 11:17
                  AM, Tian, Xinmin <<a moz-do-not-send="true"
                    href="mailto:xinmin.tian@intel.com">xinmin.tian@intel.com</a>>
                  wrote:</span><br>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite"><span></span><br>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span>This means that the
                          optimizer has to be aware of it, I’m missing
                          the magic here?</span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite"><span></span><br>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite"><span>This is one option.  </span><br>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite"><span></span><br>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite"><span>The another option is that,
                  as I mentioned in our LLVM-HPC paper in our
                  implementation. We have a "prepare phase for
                  pre-privatization" can be invoked by both Clang FE and
                  Fortran FE right after LLVM IR is generated. So, in
                  this way, we are able to minimize the optimizations
                  impact for the original val and I</span><br>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite"><span></span><br>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite"><span>Ok, but this looks like a
                “workaround" for your specific use-case, I don’t see how
                it can scale as a model-agnostic and general-purpose
                region semantic.</span><br>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite"><span></span><br>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite"><span>The fact that you needed this
                pre-step in the first place seems to indicate to me that
                it confirms what multiple people expressed in this
                thread, for example what Daniel wrote here: <a
                  moz-do-not-send="true"
                  href="http://lists.llvm.org/pipermail/llvm-dev/2017-January/108997.html">http://lists.llvm.org/pipermail/llvm-dev/2017-January/108997.html</a></span><br>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite"><span></span><br>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite"><span>— </span><br>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite"><span>Mehdi</span><br>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite"><span></span><br>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite"><span></span><br>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite"><span></span><br>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite"><span></span><br>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite"><span>{ void main() {</span><br>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite"><span>i32* val = alloca i32</span><br>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite"><span>i32* I = alloca 32</span><br>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite"><span>i32* priv_val = alloca i32</span><br>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite"><span>i32* priv_i alloca 32</span><br>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite"><span>tok =
                  llvm.experimental.intrinsic_a()[
                  "DIR.PARALLEL"(),"QUAL.PRIVATE"(i32* %priv_val, i32
                  %priv_i), "QUAL.NUM_THREADS"(i32 4)]</span><br>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite"><span></span><br>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite"><span>%priv_i =
                  omp_get_thread_num();</span><br>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite"><span>compute_something_into_val(%priv_val,
                  %priv_i);  </span><br>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite"><span>a[priv_i] = %priv_val;</span><br>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite"><span></span><br>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite"><span>llvm.experimental.intrinsic_b(tok)["DIR.END.PARALLEL"()];</span><br>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite"><span>....</span><br>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite"><span></span><br>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite"><span>I = </span><br>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite"><span>Val =</span><br>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite"><span>Foo(val, i). </span><br>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite"><span>}</span><br>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite"><span></span><br>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite"><span>"Prepare phase" is our way
                  of minimizing the impact to existing optimizations. </span><br>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite"><span></span><br>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite"><span>Xinmin</span><br>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite"><span></span><br>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite"><span>-----Original Message-----</span><br>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite"><span>From: <a
                    moz-do-not-send="true"
                    href="mailto:mehdi.amini@apple.com">mehdi.amini@apple.com</a>
                  [<a moz-do-not-send="true"
                    href="mailto:mehdi.amini@apple.com">mailto:mehdi.amini@apple.com</a>]
                </span><br>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite"><span>Sent: Friday, January 20,
                  2017 10:54 AM</span><br>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite"><span>To: Tian, Xinmin</span><br>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite"><span>Cc: Sanjoy Das; Adve, Vikram
                  Sadanand; <a moz-do-not-send="true"
                    href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>;
                  <a moz-do-not-send="true"
                    href="mailto:llvm-dev-request@lists.llvm.org">llvm-dev-request@lists.llvm.org</a></span><br>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite"><span>Subject: Re: [llvm-dev]
                  [RFC] IR-level Region Annotations</span><br>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite"><span></span><br>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite"><span></span><br>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>On Jan 20, 2017, at 10:44
                    AM, Tian, Xinmin via llvm-dev <<a
                      moz-do-not-send="true"
                      href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>>
                    wrote:</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span></span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>Sanjoy, the IR would be
                    like something below. It is ok to hoist alloca
                    instruction outside the region. There are some small
                    changes in optimizer to understand region-annotation
                    intrinsic.   </span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span></span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>{ void main() {</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>i32* val = alloca i32</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>tok =
                    llvm.experimental.intrinsic_a()[ "DIR.PARALLEL"(), </span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>"QUAL.PRIVATE"(i32* val),
                    "QUAL.NUM_THREADS"(i32 4)]</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span></span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>int i =
                    omp_get_thread_num();</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>compute_something_into_val(val,
                    i);</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>a[i] = val;</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span></span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>llvm.experimental.intrinsic_b(tok)["DIR.END.PARALLEL"()];</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>}</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span></span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>With above representation,
                    we can do privatization and outlining as </span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>below</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span></span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>{ void main() {</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>i32* val = alloca i32</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>i32* I = alloca 32</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>tok =
                    llvm.experimental.intrinsic_a()[ "DIR.PARALLEL"(), </span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>"QUAL.PRIVATE"(i32* %val,
                    i32 %i), "QUAL.NUM_THREADS"(i32 4)]</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span></span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>%ii =
                    omp_get_thread_num();</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>compute_something_into_val(%val,
                    %i);  a[i] = %val;</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span></span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>llvm.experimental.intrinsic_b(tok)["DIR.END.PARALLEL"()];</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>}</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span></span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite"><span></span><br>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite"><span>Here we come to the
                  interesting part: the hoisting of  "i32* I = alloca
                  32” above the intrinsics required to update the
                  intrinsics information “QUAL.PRIVATE”. </span><br>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite"><span>This means that the
                  optimizer has to be aware of it, I’m missing the magic
                  here?</span><br>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite"><span>I understand that an openmp
                  specific optimization can do it, the question is how
                  it an openmp agnostic supposed to behave in face of
                  llvm.experimental.intrinsic_a?</span><br>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite"><span></span><br>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite"><span>—</span><br>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite"><span>Mehdi</span><br>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite"><span></span><br>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite"><span></span><br>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite"><span></span><br>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>1. create i32* priv_val =
                    alloca i32  %priv_i = ...in the region, and replace
                    all  %val with %prv_val in the region. </span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>2. perform outlining. </span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span></span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>Caller code</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>....</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>omp_push_num_threads(4)</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>omp_fork_call( ....
                    outline_par_region....) ....</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span></span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>Callee code: </span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>Outlined_par_rgion {</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>I32* priv_val = alloca 32</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>I32* priv_i = ....</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span></span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>Ret</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>}</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span></span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>For OpenMP, we do support
                    it at -O0, -O1, -O2 and -O3.  We had to make sure it
                    runs correctly w/ and w/o optimizations and advanced
                    analysis. So we need to preserve all source
                    information for BE.  </span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>You can take a look our
                    LLVM-HPC paper for a bit some details.  There are
                    still tons of work to be done. Thanks. </span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span></span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>Xinmin </span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span></span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>-----Original Message-----</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>From: llvm-dev [<a
                      moz-do-not-send="true"
                      href="mailto:llvm-dev-bounces@lists.llvm.org">mailto:llvm-dev-bounces@lists.llvm.org</a>]
                    On Behalf Of Sanjoy Das via llvm-dev</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>Sent: Thursday, January
                    19, 2017 10:13 PM</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>To: Adve, Vikram Sadanand
                    <<a moz-do-not-send="true"
                      href="mailto:vadve@illinois.edu">vadve@illinois.edu</a>></span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>Cc: llvm-dev <<a
                      moz-do-not-send="true"
                      href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>>;
                    <a moz-do-not-send="true"
                      href="mailto:llvm-dev-request@lists.llvm.org">llvm-dev-request@lists.llvm.org</a></span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>Subject: Re: [llvm-dev]
                    [RFC] IR-level Region Annotations</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span></span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>Hi Vikram,</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span></span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>On Thu, Jan 19, 2017 at
                    9:27 PM, Adve, Vikram Sadanand <<a
                      moz-do-not-send="true"
                      href="mailto:vadve@illinois.edu">vadve@illinois.edu</a>>
                    wrote:</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite"><span>Hi Sanjoy,</span><br>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite"><span></span><br>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite"><span>Yes, that's exactly what
                      we have been looking at recently here, but </span><br>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite"><span>the region tags seem to
                      make it possible to express the control flow </span><br>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite"><span>as well, so I think we
                      could start with reg ions+metadata, as Hal and</span><br>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span></span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>I'm not yet convinced that
                    region tags are sufficient to model exotic control
                    flow.</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span></span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>(I don't know OpenMP so
                    this is a copy-pasted-edited example)</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span></span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>Say we have:</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span></span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>void main() {</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>#pragma omp parallel
                    num_threads(4)</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>{</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>int i =
                    omp_get_thread_num();</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>int val;</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>compute_something_into_val(&val,
                    i);</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>a[i] = val;</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>}</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>}</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span></span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>I presume the (eventual)
                    intended lowering is something like this (if the
                    intended lowering is different than this, and avoids
                    the issue I'm trying to highlight then my point is
                    moot):</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span></span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>void main() {</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>tok =
                    llvm.experimental.intrinsic_a();</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span></span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>int i =
                    omp_get_thread_num();</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>i32* val = alloca i32</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>compute_something_into_val(val,
                    i);</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>a[i] = val;</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span></span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>llvm.experimental.intrinsic_b(tok);</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>}</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span></span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>However, LLVM is free to
                    hoist the alloca to the entry block:</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span></span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>void main() {</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>i32* val = alloca i32</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>tok =
                    llvm.experimental.intrinsic_a();</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span></span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>int i =
                    omp_get_thread_num();</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>compute_something_into_val(val,
                    i);</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>a[i] = val;</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span></span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>llvm.experimental.intrinsic_b(tok);</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>}</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span></span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>and now you have a race
                    between the four parallel forks.</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span></span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>The problem here is that
                    nothing in the IR expresses that we have four copies
                    of the region running "at the same time".  In fact,
                    such a control flow is alien to LLVM today.</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span></span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>For instance, another evil
                    optimization may turn:</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span></span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>void main() {</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>int a[4];</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>#pragma omp parallel
                    num_threads(4)</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>{</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>int i =
                    omp_get_thread_num();</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>int val =
                    compute_something_into_val(i);</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>a[i] = val;</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>}</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span></span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>return a[0] + a[1];</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>}</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span></span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>to</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span></span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>void main() {</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>int a[4];</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>#pragma omp parallel
                    num_threads(4)</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>{</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>int i =
                    omp_get_thread_num();</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>int val =
                    compute_something_into_val(i);</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>a[i] = val;</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>}</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span></span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>return undef;</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>}</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span></span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>since a[i] = val could
                    have initialized at most one element in a.</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span></span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>Now you could say that the
                    llvm.experimental.intrinsic_a and
                    llvm.experimental.intrinsic_b intrinsics are magic,
                    and even such "obvious" optimizations are not
                    allowed to happen across them; but then calls to
                    these intrinsics is pretty fundamentally different
                    from "normal" calls, and are probably best modeled
                    as new instructions.</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>You're going to have to do
                    the same kind of auditing of passes either way, and
                    the only extra cost of a new instruction is the
                    extra bitcode reading / writing code.</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span></span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>I hope I made sense.</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span></span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>-- Sanjoy</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span></span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite"><span>Xinmin proposed, and
                      then figure out what needs to be first class </span><br>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite"><span>instructions.</span><br>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span></span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite"><span></span><br>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite"><span>--Vikram Adve</span><br>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite"><span></span><br>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite"><span></span><br>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite"><span></span><br>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite"><span>On Jan 19, 2017, at
                        11:03 PM, Sanjoy Das <<a
                          moz-do-not-send="true"
                          href="mailto:sanjoy@playingwithpointers.com">sanjoy@playingwithpointers.com</a>>
                        wrote:</span><br>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite"><span></span><br>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite"><span>Hi,</span><br>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite"><span></span><br>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite"><span>My bias is to use both
                        (b) and (d), since they have complementary </span><br>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite"><span>strengths.  We should
                        use (b) for expressing concepts that can't be </span><br>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite"><span>semantically modeled
                        as a call or invoke (this branch takes both its
                      </span><br>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite"><span>successors), and (d)
                        for expressing things that can be (this call may
                      </span><br>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite"><span>never return), and
                        annotation like things (this region (denoted by
                      </span><br>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite"><span>def-use of a token) is
                        a reduction).</span><br>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite"><span></span><br>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite"><span>I don't grok OpenMP,
                        but perhaps we can come with one or two </span><br>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite"><span>"generalized control
                        flow"-type instructions that can be used to </span><br>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite"><span>model the
                        non-call/invoke like semantics we'd like LLVM to
                        know </span><br>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite"><span>about, and model the
                        rest with (d)?</span><br>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite"><span></span><br>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite"><span>-- Sanjoy</span><br>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite"><span></span><br>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite"><span>On Thu, Jan 19, 2017
                        at 8:28 PM, Hal Finkel via llvm-dev </span><br>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite"><span><<a
                          moz-do-not-send="true"
                          href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>>
                        wrote:</span><br>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span></span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span>On 01/19/2017 03:36
                          PM, Mehdi Amini via llvm-dev wrote:</span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span></span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span></span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span>On Jan 19, 2017, at
                          1:32 PM, Daniel Berlin <<a
                            moz-do-not-send="true"
                            href="mailto:dberlin@dberlin.org">dberlin@dberlin.org</a>>
                          wrote:</span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span></span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span></span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span></span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite"><span>On Thu, Jan 19,
                            2017 at 1:12 PM, Mehdi Amini <<a
                              moz-do-not-send="true"
                              href="mailto:mehdi.amini@apple.com">mehdi.amini@apple.com</a>>
                            wrote:</span><br>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite"><span></span><br>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite"><span></span><br>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite"><span>On Jan 19, 2017,
                            at 12:04 PM, Daniel Berlin <<a
                              moz-do-not-send="true"
                              href="mailto:dberlin@dberlin.org">dberlin@dberlin.org</a>>
                            wrote:</span><br>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite"><span></span><br>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite"><span></span><br>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite"><span></span><br>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite"><span>On Thu, Jan 19,
                            2017 at 11:46 AM, Mehdi Amini via llvm-dev </span><br>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite"><span><<a
                              moz-do-not-send="true"
                              href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>>
                            wrote:</span><br>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite">
                          <blockquote type="cite"><span></span><br>
                          </blockquote>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite">
                          <blockquote type="cite"><span></span><br>
                          </blockquote>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite">
                          <blockquote type="cite">
                            <blockquote type="cite"><span>On Jan 19,
                                2017, at 11:36 AM, Adve, Vikram Sadanand
                                via llvm-dev </span><br>
                            </blockquote>
                          </blockquote>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite">
                          <blockquote type="cite">
                            <blockquote type="cite"><span><<a
                                  moz-do-not-send="true"
                                  href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>>
                                wrote:</span><br>
                            </blockquote>
                          </blockquote>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite">
                          <blockquote type="cite">
                            <blockquote type="cite"><span></span><br>
                            </blockquote>
                          </blockquote>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite">
                          <blockquote type="cite">
                            <blockquote type="cite"><span>Hi Johannes,</span><br>
                            </blockquote>
                          </blockquote>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite">
                          <blockquote type="cite">
                            <blockquote type="cite"><span></span><br>
                            </blockquote>
                          </blockquote>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite">
                          <blockquote type="cite">
                            <blockquote type="cite">
                              <blockquote type="cite"><span>I am
                                  especially curious where you get your
                                  data from. Tapir [0] </span><br>
                              </blockquote>
                            </blockquote>
                          </blockquote>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite">
                          <blockquote type="cite">
                            <blockquote type="cite">
                              <blockquote type="cite"><span>(and to some
                                  degree PIR [1]) have shown that, </span><br>
                              </blockquote>
                            </blockquote>
                          </blockquote>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite">
                          <blockquote type="cite">
                            <blockquote type="cite">
                              <blockquote type="cite"><span>counterintuitively,
                                  only a few changes to LLVM passes are
                                </span><br>
                              </blockquote>
                            </blockquote>
                          </blockquote>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite">
                          <blockquote type="cite">
                            <blockquote type="cite">
                              <blockquote type="cite"><span>needed.
                                  Tapir was recently used in an MIT
                                  class with a lot of </span><br>
                              </blockquote>
                            </blockquote>
                          </blockquote>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite">
                          <blockquote type="cite">
                            <blockquote type="cite">
                              <blockquote type="cite"><span>students and
                                  it seemed to work well with only
                                  minimal changes to </span><br>
                              </blockquote>
                            </blockquote>
                          </blockquote>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite">
                          <blockquote type="cite">
                            <blockquote type="cite">
                              <blockquote type="cite"><span>analysis and
                                  especially transformation passes.</span><br>
                              </blockquote>
                            </blockquote>
                          </blockquote>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite">
                          <blockquote type="cite">
                            <blockquote type="cite"><span></span><br>
                            </blockquote>
                          </blockquote>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite">
                          <blockquote type="cite">
                            <blockquote type="cite"><span>TAPIR is an
                                elegant, small extension and, in
                                particular, I think </span><br>
                            </blockquote>
                          </blockquote>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite">
                          <blockquote type="cite">
                            <blockquote type="cite"><span>the idea of
                                asymmetric parallel tasks and control
                                flow is a </span><br>
                            </blockquote>
                          </blockquote>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite">
                          <blockquote type="cite">
                            <blockquote type="cite"><span>clever way to
                                express parallelism with serial
                                semantics, as in </span><br>
                            </blockquote>
                          </blockquote>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite">
                          <blockquote type="cite">
                            <blockquote type="cite"><span>Cilk.
                                 Encoding the control flow extensions as
                                explicit </span><br>
                            </blockquote>
                          </blockquote>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite">
                          <blockquote type="cite">
                            <blockquote type="cite"><span>instructions
                                is orthogonal to that, though arguably
                                more elegant than using region tags +
                                metadata.</span><br>
                            </blockquote>
                          </blockquote>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite">
                          <blockquote type="cite">
                            <blockquote type="cite"><span></span><br>
                            </blockquote>
                          </blockquote>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite">
                          <blockquote type="cite">
                            <blockquote type="cite"><span>However, Cilk
                                is a tiny language compared with the
                                full </span><br>
                            </blockquote>
                          </blockquote>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite">
                          <blockquote type="cite">
                            <blockquote type="cite"><span>complexity of
                                other languages, like OpenMP.  To take
                                just one </span><br>
                            </blockquote>
                          </blockquote>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite">
                          <blockquote type="cite">
                            <blockquote type="cite"><span>example, TAPIR
                                cannot express the ORDERED construct of
                                OpenMP.  A </span><br>
                            </blockquote>
                          </blockquote>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite">
                          <blockquote type="cite">
                            <blockquote type="cite"><span>more serious
                                concern, IMO, is that TAPIR (like Cilk)
                                requires </span><br>
                            </blockquote>
                          </blockquote>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite">
                          <blockquote type="cite">
                            <blockquote type="cite"><span>serial
                                semantics, whereas there are many
                                parallel languages, OpenMP included,
                                that do not obey that restriction.</span><br>
                            </blockquote>
                          </blockquote>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite">
                          <blockquote type="cite">
                            <blockquote type="cite"><span>Third, OpenMP
                                has *numerous* clauses, e.g., REDUCTION
                                or PRIVATE, </span><br>
                            </blockquote>
                          </blockquote>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite">
                          <blockquote type="cite">
                            <blockquote type="cite"><span>that are
                                needed because without that, you’d be
                                dependent on </span><br>
                            </blockquote>
                          </blockquote>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite">
                          <blockquote type="cite">
                            <blockquote type="cite"><span>fundamentally
                                hard compiler analyses to extract the
                                same </span><br>
                            </blockquote>
                          </blockquote>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite">
                          <blockquote type="cite">
                            <blockquote type="cite"><span>information
                                for satisfactory parallel performance;
                                realistic </span><br>
                            </blockquote>
                          </blockquote>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite">
                          <blockquote type="cite">
                            <blockquote type="cite"><span>applications
                                cannot depend on the success of such
                                analyses.</span><br>
                            </blockquote>
                          </blockquote>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite">
                          <blockquote type="cite"><span></span><br>
                          </blockquote>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite">
                          <blockquote type="cite"><span>I agree with
                              this, but I’m also wondering if it needs
                              to be first </span><br>
                          </blockquote>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite">
                          <blockquote type="cite"><span>class in the IR?</span><br>
                          </blockquote>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite">
                          <blockquote type="cite"><span>For example we
                              know our alias analysis is very basic, and
                              C/C++ </span><br>
                          </blockquote>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite">
                          <blockquote type="cite"><span>have a higher
                              constraint thanks to their type system,
                              but we </span><br>
                          </blockquote>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite">
                          <blockquote type="cite"><span>didn’t inject
                              this higher level information that helps
                              the </span><br>
                          </blockquote>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite">
                          <blockquote type="cite"><span>optimizer as
                              first class IR constructs.</span><br>
                          </blockquote>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite"><span></span><br>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite"><span></span><br>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite"><span>FWIW, while i
                            agree with the general point, i wouldn't use
                            this example.</span><br>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite"><span>Because we pretty
                            much still suffer to this day because of it
                            (both </span><br>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite"><span>in AA, and devirt,
                            and ...)  :) We can't always even tell
                            fields </span><br>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite"><span>apart</span><br>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite"><span></span><br>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite"><span></span><br>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite"><span>Is it inherent to
                            the infrastructure, i.e. using metadata
                            instead </span><br>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite">
                        <blockquote type="cite"><span>of first class IR
                            construct or is it just a “quality of
                            implementation” issue?</span><br>
                        </blockquote>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span></span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span>Not to derail this
                          conversation:</span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span></span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span>IMHO, At some point
                          there is no real difference :)</span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span></span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span>Because otherwise,
                          everything is a QOI issue.</span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span></span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span>IE if it's super
                          tricky to get metadata that works well and
                          works </span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span>right, doesn't get
                          lost, etc, and that's inherent to using
                          metadata, </span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span>that to me is not a
                          QOI issue.</span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span></span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span>So could it be done
                          with metadata? Probably?</span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span>But at the same
                          time,  if it had been done with more first
                          class </span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span>constructs, it would
                          have happened years ago  and been much lower
                          cost.</span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span></span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span></span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span>This is what I meant
                          by “inherent to the infrastructure”, thanks
                          for </span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span>clarifying.</span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span></span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span></span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span>To clarify, we were
                          proposing metadata that is used as arguments
                          to </span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span>the
                          region-annotation intrinsics. This metadata
                          has the nice </span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span>property that it
                          does not get dropped (so it is just being used
                          as a </span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span>way of encoding
                          whatever data structures are necessary without
                          predefining a syntactic schema).</span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span></span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span>-Hal</span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span></span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span></span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span>—</span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span>Mehdi</span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span></span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span></span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span></span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span></span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span>_______________________________________________</span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span>LLVM Developers
                          mailing list</span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span><a
                            moz-do-not-send="true"
                            href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a></span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span><a
                            moz-do-not-send="true"
                            href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a></span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span></span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span></span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span>--</span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span>Hal Finkel</span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span>Lead, Compiler
                          Technology and Programming Languages
                          Leadership </span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span>Computing Facility
                          Argonne National Laboratory</span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span></span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span></span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span>_______________________________________________</span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span>LLVM Developers
                          mailing list</span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span><a
                            moz-do-not-send="true"
                            href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a></span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span><a
                            moz-do-not-send="true"
                            href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a></span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite">
                  <blockquote type="cite">
                    <blockquote type="cite">
                      <blockquote type="cite"><span></span><br>
                      </blockquote>
                    </blockquote>
                  </blockquote>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>_______________________________________________</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>LLVM Developers mailing
                    list</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span><a moz-do-not-send="true"
                      href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a></span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span><a moz-do-not-send="true"
href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a></span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>_______________________________________________</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span>LLVM Developers mailing
                    list</span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span><a moz-do-not-send="true"
                      href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a></span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <blockquote type="cite"><span><a moz-do-not-send="true"
href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a></span><br>
                </blockquote>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite"><span></span><br>
              </blockquote>
            </blockquote>
          </blockquote>
          <blockquote type="cite">
            <blockquote type="cite"><span></span><br>
            </blockquote>
          </blockquote>
          <blockquote type="cite"><span></span><br>
          </blockquote>
          <span></span><br>
        </div>
      </blockquote>
      <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>
    <br>
    <pre class="moz-signature" cols="72">-- 
Hal Finkel
Lead, Compiler Technology and Programming Languages
Leadership Computing Facility
Argonne National Laboratory</pre>
  </body>
</html>