<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html;
      charset=windows-1252">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <div class="moz-cite-prefix">Thanks!<br>
      <br>
      On 01/11/2018 09:22 AM, Chris Bieneman wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:221BE6E9-976D-439A-BC8B-33797A327788@me.com">
      <meta http-equiv="Content-Type" content="text/html;
        charset=windows-1252">
      I will work up a patch to adapt to Philip's suggestion.
      <div class=""><br class="">
      </div>
      <div class="">-Chris<br class="">
        <div><br class="">
          <blockquote type="cite" class="">
            <div class="">On Jan 11, 2018, at 8:47 AM, Daniel Berlin via
              llvm-commits <<a
                href="mailto:llvm-commits@lists.llvm.org" class=""
                moz-do-not-send="true">llvm-commits@lists.llvm.org</a>>
              wrote:</div>
            <br class="Apple-interchange-newline">
            <div class="">
              <div dir="ltr" style="font-family: Helvetica; font-size:
                12px; font-style: normal; font-variant-caps: normal;
                font-weight: normal; letter-spacing: normal; text-align:
                start; text-indent: 0px; text-transform: none;
                white-space: normal; word-spacing: 0px;
                -webkit-text-stroke-width: 0px;" class="">
                <div class="gmail_extra"><br
                    class="Apple-interchange-newline">
                  <br class="">
                  <div class="gmail_quote">On Wed, Jan 10, 2018 at 3:36
                    PM, Philip Reames via llvm-commits<span
                      class="Apple-converted-space"> </span><span
                      dir="ltr" class=""><<a
                        href="mailto:llvm-commits@lists.llvm.org"
                        target="_blank" class="" moz-do-not-send="true">llvm-commits@lists.llvm.org</a>></span><span
                      class="Apple-converted-space"> </span>wrote:<br
                      class="">
                    <blockquote class="gmail_quote" style="margin: 0px
                      0px 0px 0.8ex; border-left-width: 1px;
                      border-left-style: solid; border-left-color:
                      rgb(204, 204, 204); padding-left: 1ex;">I think
                      this is wrong.  In particular, an ordered memory
                      operation is NOT safe to remove during constant
                      propagation, even if it's result is known.  The
                      ordered load has a side effect of ordering other
                      loads which is not safe to remove.  The entire
                      *point* of having side effects is that there's an
                      effect other than the result of the instruction.<br
                        class="">
                      <br class="">
                      Now, looking at the code I see that this is not a
                      bug this change introduced. </blockquote>
                    <div class=""><br class="">
                    </div>
                    <div class="">Yes, my only goal was to keep the same
                      semantics that existed prior to this change.</div>
                    <div class="">If we think these semantics are wrong,
                      ...</div>
                    <div class=""> </div>
                    <blockquote class="gmail_quote" style="margin: 0px
                      0px 0px 0.8ex; border-left-width: 1px;
                      border-left-style: solid; border-left-color:
                      rgb(204, 204, 204); padding-left: 1ex;">It appears
                      to have been present in the code previously. 
                      (Well, if tryToReplaceWithConstant could even
                      return true for said side effecting instructions.)<br
                        class="">
                      <br class="">
                      I'll point out that another call site to the same
                      function exists for the same purpose in the same
                      file. This is clearly not the first time this has
                      come up.<br class="">
                      <br class="">
                      I am now specifically asking that this be changed
                      to use isInstructionTriviallyDead which accounts
                      properly for these cases, or a clear test case
                      where that is not sufficient be provided.<br
                        class="">
                      <br class="">
                      Philip
                      <div class="HOEnZb">
                        <div class="h5"><br class="">
                          <br class="">
                          <br class="">
                          On 01/10/2018 07:22 AM, Davide Italiano wrote:<br
                            class="">
                          <blockquote class="gmail_quote" style="margin:
                            0px 0px 0px 0.8ex; border-left-width: 1px;
                            border-left-style: solid; border-left-color:
                            rgb(204, 204, 204); padding-left: 1ex;">Please
                            refer to the review for details.<br class="">
                            Copy/pasting Danny's comment here for your
                            convenience:<br class="">
                            <br class="">
                            "That would not return true for anything
                            with side effects. So it will<br class="">
                            not handle the atomic loads and stores
                            cases. mayHaveSideEffects will<br class="">
                            return true for anything that might write to
                            memory. mayWriteToMemory<br class="">
                            will return true for any store, and any
                            ordered load.<br class="">
                            <br class="">
                            In fact, even getModRefInfo wouldn't help
                            you with that here, it would<br class="">
                            do the same, and can't be overridden by
                            anything more powerful right<br class="">
                            now (we only have an AA interface for
                            callsites, the regular<br class="">
                            instructions are all single implementation
                            in AliasAnalysis.cpp)<br class="">
                            <br class="">
                            So TL; DR if you wanted to use
                            isInstructionTriviallyDead, it would be<br
                              class="">
                            something like isInstructionTriviallyDead ||
                            is a load || is a store<br class="">
                            || atomicrmw || cmpxchng || ...."<br
                              class="">
                            <br class="">
                            --<br class="">
                            Davide<br class="">
                            <br class="">
                            On Tue, Jan 9, 2018 at 10:40 PM, Philip
                            Reames<br class="">
                            <<a
                              href="mailto:listmail@philipreames.com"
                              target="_blank" class=""
                              moz-do-not-send="true">listmail@philipreames.com</a>>
                            wrote:<br class="">
                            <blockquote class="gmail_quote"
                              style="margin: 0px 0px 0px 0.8ex;
                              border-left-width: 1px; border-left-style:
                              solid; border-left-color: rgb(204, 204,
                              204); padding-left: 1ex;">I think I'm
                              missing something then.  Why would any
                              trivially dead<br class="">
                              instruction not be safe to remove in SCCP
                              after we've done the constant<br class="">
                              folding of the result?<br class="">
                              <br class="">
                              Philip<br class="">
                              <br class="">
                              <br class="">
                              <br class="">
                              On 01/09/2018 04:09 PM, Davide Italiano
                              wrote:<br class="">
                              <blockquote class="gmail_quote"
                                style="margin: 0px 0px 0px 0.8ex;
                                border-left-width: 1px;
                                border-left-style: solid;
                                border-left-color: rgb(204, 204, 204);
                                padding-left: 1ex;">hmm, the original
                                proposal was that of keeping this
                                function private<br class="">
                                to SCCP as it has slightly different
                                requirement<br class="">
                                (`isInstructionTriviallyDead()<wbr
                                  class="">` wasn't enough in this
                                case).<br class="">
                                Anyway, happy either way (if this gets
                                merged as Philip suggested).<br class="">
                                <br class="">
                                On Tue, Jan 9, 2018 at 4:01 PM, Philip
                                Reames via llvm-commits<br class="">
                                <<a
                                  href="mailto:llvm-commits@lists.llvm.org"
                                  target="_blank" class=""
                                  moz-do-not-send="true">llvm-commits@lists.llvm.org</a>>
                                wrote:<br class="">
                                <blockquote class="gmail_quote"
                                  style="margin: 0px 0px 0px 0.8ex;
                                  border-left-width: 1px;
                                  border-left-style: solid;
                                  border-left-color: rgb(204, 204, 204);
                                  padding-left: 1ex;">This appears to be
                                  duplicating functionality from<br
                                    class="">
                                  isInstructionTriviallyDead.  Please
                                  merge them.<br class="">
                                  <br class="">
                                  Philip<br class="">
                                  <br class="">
                                  <br class="">
                                  <br class="">
                                  On 01/09/2018 01:58 PM, Chris Bieneman
                                  via llvm-commits wrote:<br class="">
                                  <blockquote class="gmail_quote"
                                    style="margin: 0px 0px 0px 0.8ex;
                                    border-left-width: 1px;
                                    border-left-style: solid;
                                    border-left-color: rgb(204, 204,
                                    204); padding-left: 1ex;">Author:
                                    cbieneman<br class="">
                                    Date: Tue Jan  9 13:58:46 2018<br
                                      class="">
                                    New Revision: 322125<br class="">
                                    <br class="">
                                    URL:<span
                                      class="Apple-converted-space"> </span><a
href="http://llvm.org/viewvc/llvm-project?rev=322125&view=rev"
                                      rel="noreferrer" target="_blank"
                                      class="" moz-do-not-send="true">http://llvm.org/viewvc/llvm-pr<wbr
                                        class="">oject?rev=322125&view=rev</a><br
                                      class="">
                                    Log:<br class="">
                                    [IPSCCP] Remove calls without side
                                    effects<br class="">
                                    <br class="">
                                    Summary:<br class="">
                                    When performing constant propagation
                                    for call instructions we have<br
                                      class="">
                                    historically replaced all uses of
                                    the return from a call, but not<br
                                      class="">
                                    removed<br class="">
                                    the call itself. This is required
                                    for correctness if the calls have
                                    side<br class="">
                                    effects, however the compiler should
                                    be able to safely remove calls that<br
                                      class="">
                                    don't have side effects.<br class="">
                                    <br class="">
                                    This allows the compiler to
                                    completely fold away calls to
                                    functions that<br class="">
                                    have no side effects if the inputs
                                    are constant and the output can be<br
                                      class="">
                                    determined at compile time.<br
                                      class="">
                                    <br class="">
                                    Reviewers: davide, sanjoy, bruno,
                                    dberlin<br class="">
                                    <br class="">
                                    Subscribers: llvm-commits<br
                                      class="">
                                    <br class="">
                                    Differential Revision:<span
                                      class="Apple-converted-space"> </span><a
href="https://reviews.llvm.org/D38856" rel="noreferrer" target="_blank"
                                      class="" moz-do-not-send="true">https://reviews.llvm.org/D3885<wbr
                                        class="">6</a><br class="">
                                    <br class="">
                                    Added:<br class="">
                                           llvm/trunk/test/Transforms/IP<wbr
                                      class="">ConstantProp/remove-call-inst.<wbr
                                      class="">ll<br class="">
                                             - copied, changed from
                                    r322124,<br class="">
                                    llvm/trunk/test/Transforms/IPC<wbr
                                      class="">onstantProp/user-with-multiple<wbr
                                      class="">-uses.ll<br class="">
                                    Modified:<br class="">
                                           llvm/trunk/include/llvm/IR/In<wbr
                                      class="">struction.h<br class="">
                                           llvm/trunk/lib/IR/<wbr
                                      class="">Instruction.cpp<br
                                      class="">
                                           llvm/trunk/lib/Transforms/Sca<wbr
                                      class="">lar/SCCP.cpp<br class="">
                                    <br class="">
                                    llvm/trunk/test/Transforms/IPC<wbr
                                      class="">onstantProp/user-with-multiple<wbr
                                      class="">-uses.ll<br class="">
                                    <br class="">
                                    Modified:
                                    llvm/trunk/include/llvm/IR/Ins<wbr
                                      class="">truction.h<br class="">
                                    URL:<br class="">
                                    <br class="">
                                    <a
href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/Instruction.h?rev=322125&r1=322124&r2=322125&view=diff"
                                      rel="noreferrer" target="_blank"
                                      class="" moz-do-not-send="true">http://llvm.org/viewvc/llvm-pr<wbr
                                        class="">oject/llvm/trunk/include/llvm/<wbr
                                        class="">IR/Instruction.h?rev=322125&<wbr
                                        class="">r1=322124&r2=322125&view=diff</a><br
                                      class="">
                                    <br class="">
                                    <br class="">
                                    ==============================<wbr
                                      class="">==============================<wbr
                                      class="">==================<br
                                      class="">
                                    --- llvm/trunk/include/llvm/IR/Ins<wbr
                                      class="">truction.h (original)<br
                                      class="">
                                    +++ llvm/trunk/include/llvm/IR/Ins<wbr
                                      class="">truction.h Tue Jan  9
                                    13:58:46 2018<br class="">
                                    @@ -535,6 +535,14 @@ public:<br
                                      class="">
                                         <span
                                      class="Apple-converted-space"> </span>///
                                    matters,
                                    isSafeToSpeculativelyExecute may be
                                    more appropriate.<br class="">
                                         <span
                                      class="Apple-converted-space"> </span>bool
                                    mayHaveSideEffects() const { return
                                    mayWriteToMemory() ||<br class="">
                                    mayThrow(); }<br class="">
                                       <span
                                      class="Apple-converted-space"> </span>+ 
                                    /// Return true if the instruction
                                    can be removed if the result is<br
                                      class="">
                                    unused.<br class="">
                                    +  ///<br class="">
                                    +  /// When constant folding some
                                    instructions cannot be removed even
                                    if<br class="">
                                    their<br class="">
                                    +  /// results are unused.
                                    Specifically terminator instructions
                                    and<br class="">
                                    calls<br class="">
                                    that<br class="">
                                    +  /// may have side effects cannot
                                    be removed without semantically<br
                                      class="">
                                    changing the<br class="">
                                    +  /// generated program.<br
                                      class="">
                                    +  bool isSafeToRemove() const;<br
                                      class="">
                                    +<br class="">
                                         <span
                                      class="Apple-converted-space"> </span>///
                                    Return true if the instruction is a
                                    variety of EH-block.<br class="">
                                         <span
                                      class="Apple-converted-space"> </span>bool
                                    isEHPad() const {<br class="">
                                           <span
                                      class="Apple-converted-space"> </span>switch
                                    (getOpcode()) {<br class="">
                                    <br class="">
                                    Modified:
                                    llvm/trunk/lib/IR/Instruction.<wbr
                                      class="">cpp<br class="">
                                    URL:<br class="">
                                    <br class="">
                                    <a
href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/Instruction.cpp?rev=322125&r1=322124&r2=322125&view=diff"
                                      rel="noreferrer" target="_blank"
                                      class="" moz-do-not-send="true">http://llvm.org/viewvc/llvm-pr<wbr
                                        class="">oject/llvm/trunk/lib/IR/Instru<wbr
                                        class="">ction.cpp?rev=322125&r1=322124<wbr
                                        class="">&r2=322125&view=diff</a><br
                                      class="">
                                    <br class="">
                                    <br class="">
                                    ==============================<wbr
                                      class="">==============================<wbr
                                      class="">==================<br
                                      class="">
                                    --- llvm/trunk/lib/IR/Instruction.<wbr
                                      class="">cpp (original)<br
                                      class="">
                                    +++ llvm/trunk/lib/IR/Instruction.<wbr
                                      class="">cpp Tue Jan  9 13:58:46
                                    2018<br class="">
                                    @@ -589,6 +589,11 @@ bool
                                    Instruction::mayThrow() const {<br
                                      class="">
                                         <span
                                      class="Apple-converted-space"> </span>return
                                    isa<ResumeInst>(this);<br
                                      class="">
                                       <span
                                      class="Apple-converted-space"> </span>}<br
                                      class="">
                                       <span
                                      class="Apple-converted-space"> </span>+bool
                                    Instruction::isSafeToRemove() const
                                    {<br class="">
                                    +  return
                                    (!isa<CallInst>(this) ||
                                    !this->mayHaveSideEffects())
                                    &&<br class="">
                                    +       
                                     !isa<TerminatorInst>(this);<br
                                      class="">
                                    +}<br class="">
                                    +<br class="">
                                       <span
                                      class="Apple-converted-space"> </span>bool
                                    Instruction::isAssociative() const {<br
                                      class="">
                                         <span
                                      class="Apple-converted-space"> </span>unsigned
                                    Opcode = getOpcode();<br class="">
                                         <span
                                      class="Apple-converted-space"> </span>if
                                    (isAssociative(Opcode))<br class="">
                                    <br class="">
                                    Modified:
                                    llvm/trunk/lib/Transforms/Scal<wbr
                                      class="">ar/SCCP.cpp<br class="">
                                    URL:<br class="">
                                    <br class="">
                                    <a
href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/SCCP.cpp?rev=322125&r1=322124&r2=322125&view=diff"
                                      rel="noreferrer" target="_blank"
                                      class="" moz-do-not-send="true">http://llvm.org/viewvc/llvm-pr<wbr
                                        class="">oject/llvm/trunk/lib/Transform<wbr
                                        class="">s/Scalar/SCCP.cpp?rev=322125&<wbr
                                        class="">r1=322124&r2=322125&view=diff</a><br
                                      class="">
                                    <br class="">
                                    <br class="">
                                    ==============================<wbr
                                      class="">==============================<wbr
                                      class="">==================<br
                                      class="">
                                    --- llvm/trunk/lib/Transforms/Scal<wbr
                                      class="">ar/SCCP.cpp (original)<br
                                      class="">
                                    +++ llvm/trunk/lib/Transforms/Scal<wbr
                                      class="">ar/SCCP.cpp Tue Jan  9
                                    13:58:46 2018<br class="">
                                    @@ -1900,7 +1900,7 @@ static bool
                                    runIPSCCP(Module &M, const D<br
                                      class="">
                                               <span
                                      class="Apple-converted-space"> </span>if
                                    (Inst->getType()->isVoidTy())<br
                                      class="">
                                                 <span
                                      class="Apple-converted-space"> </span>continue;<br
                                      class="">
                                               <span
                                      class="Apple-converted-space"> </span>if
                                    (tryToReplaceWithConstant(Solv<wbr
                                      class="">er, Inst)) {<br class="">
                                    -          if
                                    (!isa<CallInst>(Inst)
                                    &&
                                    !isa<TerminatorInst>(Inst))<br
                                      class="">
                                    +          if
                                    (Inst->isSafeToRemove())<br
                                      class="">
                                                   <span
                                      class="Apple-converted-space"> </span>Inst->eraseFromParent();<br
                                      class="">
                                                 <span
                                      class="Apple-converted-space"> </span>//
                                    Hey, we just changed something!<br
                                      class="">
                                                 <span
                                      class="Apple-converted-space"> </span>MadeChanges
                                    = true;<br class="">
                                    <br class="">
                                    Copied:
                                    llvm/trunk/test/Transforms/IPC<wbr
                                      class="">onstantProp/remove-call-inst.<wbr
                                      class="">ll<br class="">
                                    (from r322124,<br class="">
                                    llvm/trunk/test/Transforms/IPC<wbr
                                      class="">onstantProp/user-with-multiple<wbr
                                      class="">-uses.ll)<br class="">
                                    URL:<br class="">
                                    <br class="">
                                    <a
href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/IPConstantProp/remove-call-inst.ll?p2=llvm/trunk/test/Transforms/IPConstantProp/remove-call-inst.ll&p1=llvm/trunk/test/Transforms/IPConstantProp/user-with-multiple-uses.ll&r1=322124&r2=322125&rev=322125&view=diff"
                                      rel="noreferrer" target="_blank"
                                      class="" moz-do-not-send="true">http://llvm.org/viewvc/llvm-pr<wbr
                                        class="">oject/llvm/trunk/test/Transfor<wbr
                                        class="">ms/IPConstantProp/remove-call-<wbr
                                        class="">inst.ll?p2=llvm/trunk/test/<wbr
                                        class="">Transforms/IPConstantProp/<wbr
                                        class="">remove-call-inst.ll&p1=llvm/<wbr
                                        class="">trunk/test/Transforms/<wbr
                                        class="">IPConstantProp/user-with-<wbr
                                        class="">multiple-uses.ll&r1=322124&r2=<wbr
                                        class="">322125&rev=322125&view=diff</a><br
                                      class="">
                                    <br class="">
                                    <br class="">
                                    ==============================<wbr
                                      class="">==============================<wbr
                                      class="">==================<br
                                      class="">
                                    --- llvm/trunk/test/Transforms/IPC<wbr
                                      class="">onstantProp/user-with-multiple<wbr
                                      class="">-uses.ll<br class="">
                                    (original)<br class="">
                                    +++ llvm/trunk/test/Transforms/IPC<wbr
                                      class="">onstantProp/remove-call-inst.<wbr
                                      class="">ll Tue<br class="">
                                    Jan<br class="">
                                    9 13:58:46 2018<br class="">
                                    @@ -6,7 +6,7 @@<br class="">
                                         <span
                                      class="Apple-converted-space"> </span>;
                                    CHECK: define i32 @main() #0 {<br
                                      class="">
                                       <span
                                      class="Apple-converted-space"> </span>;
                                    CHECK-NEXT: entry:<br class="">
                                    -; CHECK-NEXT: %call2 = tail call
                                    i32 @wwrite(i64 0) [[NUW:#[0-9]+]]<br
                                      class="">
                                    +; CHECK-NOT: call<br class="">
                                       <span
                                      class="Apple-converted-space"> </span>;
                                    CHECK-NEXT: ret i32 123<br class="">
                                         <span
                                      class="Apple-converted-space"> </span>define
                                    i32 @main() noreturn nounwind {<br
                                      class="">
                                    @@ -31,4 +31,3 @@ return:<br
                                      class="">
                                         <span
                                      class="Apple-converted-space"> </span>;
                                    CHECK: attributes #0 = { noreturn
                                    nounwind }<br class="">
                                       <span
                                      class="Apple-converted-space"> </span>;
                                    CHECK: attributes #1 = { nounwind
                                    readnone }<br class="">
                                    -; CHECK: attributes [[NUW]] = {
                                    nounwind }<br class="">
                                    <br class="">
                                    Modified:<br class="">
                                    llvm/trunk/test/Transforms/IPC<wbr
                                      class="">onstantProp/user-with-multiple<wbr
                                      class="">-uses.ll<br class="">
                                    URL:<br class="">
                                    <br class="">
                                    <a
href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/IPConstantProp/user-with-multiple-uses.ll?rev=322125&r1=322124&r2=322125&view=diff"
                                      rel="noreferrer" target="_blank"
                                      class="" moz-do-not-send="true">http://llvm.org/viewvc/llvm-pr<wbr
                                        class="">oject/llvm/trunk/test/Transfor<wbr
                                        class="">ms/IPConstantProp/user-with-<wbr
                                        class="">multiple-uses.ll?rev=322125&<wbr
                                        class="">r1=322124&r2=322125&view=diff</a><br
                                      class="">
                                    <br class="">
                                    <br class="">
                                    ==============================<wbr
                                      class="">==============================<wbr
                                      class="">==================<br
                                      class="">
                                    --- llvm/trunk/test/Transforms/IPC<wbr
                                      class="">onstantProp/user-with-multiple<wbr
                                      class="">-uses.ll<br class="">
                                    (original)<br class="">
                                    +++ llvm/trunk/test/Transforms/IPC<wbr
                                      class="">onstantProp/user-with-multiple<wbr
                                      class="">-uses.ll<br class="">
                                    Tue Jan  9 13:58:46 2018<br class="">
                                    @@ -15,7 +15,7 @@ entry:<br class="">
                                         <span
                                      class="Apple-converted-space"> </span>ret
                                    i32 %call2<br class="">
                                       <span
                                      class="Apple-converted-space"> </span>}<br
                                      class="">
                                       <span
                                      class="Apple-converted-space"> </span>-define
                                    internal i32 @wwrite(i64 %i)
                                    nounwind readnone {<br class="">
                                    +define internal i32 @wwrite(i64 %i)
                                    nounwind {<br class="">
                                       <span
                                      class="Apple-converted-space"> </span>entry:<br
                                      class="">
                                         <span
                                      class="Apple-converted-space"> </span>switch
                                    i64 %i, label %sw.default [<br
                                      class="">
                                           <span
                                      class="Apple-converted-space"> </span>i64
                                    3, label %return<br class="">
                                    @@ -30,5 +30,4 @@ return:<br
                                      class="">
                                       <span
                                      class="Apple-converted-space"> </span>}<br
                                      class="">
                                         <span
                                      class="Apple-converted-space"> </span>;
                                    CHECK: attributes #0 = { noreturn
                                    nounwind }<br class="">
                                    -; CHECK: attributes #1 = { nounwind
                                    readnone }<br class="">
                                    -; CHECK: attributes [[NUW]] = {
                                    nounwind }<br class="">
                                    +; CHECK: attributes #1 = { nounwind
                                    }<br class="">
                                    <br class="">
                                    <br class="">
                                    ______________________________<wbr
                                      class="">_________________<br
                                      class="">
                                    llvm-commits mailing list<br
                                      class="">
                                    <a
                                      href="mailto:llvm-commits@lists.llvm.org"
                                      target="_blank" class=""
                                      moz-do-not-send="true">llvm-commits@lists.llvm.org</a><br
                                      class="">
                                    <a
                                      href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits"
                                      rel="noreferrer" target="_blank"
                                      class="" moz-do-not-send="true">http://lists.llvm.org/cgi-bin/<wbr
                                        class="">mailman/listinfo/llvm-commits</a><br
                                      class="">
                                  </blockquote>
                                  <br class="">
                                  ______________________________<wbr
                                    class="">_________________<br
                                    class="">
                                  llvm-commits mailing list<br class="">
                                  <a
                                    href="mailto:llvm-commits@lists.llvm.org"
                                    target="_blank" class=""
                                    moz-do-not-send="true">llvm-commits@lists.llvm.org</a><br
                                    class="">
                                  <a
                                    href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits"
                                    rel="noreferrer" target="_blank"
                                    class="" moz-do-not-send="true">http://lists.llvm.org/cgi-bin/<wbr
                                      class="">mailman/listinfo/llvm-commits</a><br
                                    class="">
                                </blockquote>
                                <br class="">
                                <br class="">
                              </blockquote>
                            </blockquote>
                            <br class="">
                            <br class="">
                          </blockquote>
                          <br class="">
                          ______________________________<wbr class="">_________________<br
                            class="">
                          llvm-commits mailing list<br class="">
                          <a href="mailto:llvm-commits@lists.llvm.org"
                            target="_blank" class=""
                            moz-do-not-send="true">llvm-commits@lists.llvm.org</a><br
                            class="">
                          <a
                            href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits"
                            rel="noreferrer" target="_blank" class=""
                            moz-do-not-send="true">http://lists.llvm.org/cgi-bin/<wbr
                              class="">mailman/listinfo/llvm-commits</a><br
                            class="">
                        </div>
                      </div>
                    </blockquote>
                  </div>
                  <br class="">
                </div>
              </div>
              <span style="font-family: Helvetica; font-size: 12px;
                font-style: normal; font-variant-caps: normal;
                font-weight: normal; letter-spacing: normal; text-align:
                start; text-indent: 0px; text-transform: none;
                white-space: normal; word-spacing: 0px;
                -webkit-text-stroke-width: 0px; float: none; display:
                inline !important;" class="">_______________________________________________</span><br
                style="font-family: Helvetica; font-size: 12px;
                font-style: normal; font-variant-caps: normal;
                font-weight: normal; letter-spacing: normal; text-align:
                start; text-indent: 0px; text-transform: none;
                white-space: normal; word-spacing: 0px;
                -webkit-text-stroke-width: 0px;" class="">
              <span style="font-family: Helvetica; font-size: 12px;
                font-style: normal; font-variant-caps: normal;
                font-weight: normal; letter-spacing: normal; text-align:
                start; text-indent: 0px; text-transform: none;
                white-space: normal; word-spacing: 0px;
                -webkit-text-stroke-width: 0px; float: none; display:
                inline !important;" class="">llvm-commits mailing list</span><br
                style="font-family: Helvetica; font-size: 12px;
                font-style: normal; font-variant-caps: normal;
                font-weight: normal; letter-spacing: normal; text-align:
                start; text-indent: 0px; text-transform: none;
                white-space: normal; word-spacing: 0px;
                -webkit-text-stroke-width: 0px;" class="">
              <a href="mailto:llvm-commits@lists.llvm.org"
                style="font-family: Helvetica; font-size: 12px;
                font-style: normal; font-variant-caps: normal;
                font-weight: normal; letter-spacing: normal; orphans:
                auto; text-align: start; text-indent: 0px;
                text-transform: none; white-space: normal; widows: auto;
                word-spacing: 0px; -webkit-text-size-adjust: auto;
                -webkit-text-stroke-width: 0px;" class=""
                moz-do-not-send="true">llvm-commits@lists.llvm.org</a><br
                style="font-family: Helvetica; font-size: 12px;
                font-style: normal; font-variant-caps: normal;
                font-weight: normal; letter-spacing: normal; text-align:
                start; text-indent: 0px; text-transform: none;
                white-space: normal; word-spacing: 0px;
                -webkit-text-stroke-width: 0px;" class="">
              <a
                href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits"
                style="font-family: Helvetica; font-size: 12px;
                font-style: normal; font-variant-caps: normal;
                font-weight: normal; letter-spacing: normal; orphans:
                auto; text-align: start; text-indent: 0px;
                text-transform: none; white-space: normal; widows: auto;
                word-spacing: 0px; -webkit-text-size-adjust: auto;
                -webkit-text-stroke-width: 0px;" class=""
                moz-do-not-send="true">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a></div>
          </blockquote>
        </div>
        <br class="">
      </div>
    </blockquote>
    <p><br>
    </p>
  </body>
</html>