<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Wasn't quite as simple as it first looked, but this should be fixed
    in 237985.  I think this should be fine, but if you observe problems
    with either this change or the original, feel free to revert.  I'm
    going to be offline for the rest of the evening and won't be able to
    respond promptly.  <br>
    <br>
    Philip <br>
    <br>
    <div class="moz-cite-prefix">On 05/21/2015 05:28 PM, Philip Reames
      wrote:<br>
    </div>
    <blockquote cite="mid:555E7833.2000802@philipreames.com" type="cite">
      <meta content="text/html; charset=windows-1252"
        http-equiv="Content-Type">
      Sanjoy is out on vacation, but I'm going to look into this.  I'll
      be offline for about an hour, but should be able to start
      investigating by around 7pm.  On the surface, it looks like it
      should be an easy fix.  Hopefully, I'll have this resolved within
      a couple of hours.  Sorry for the breakage.  <br>
      <br>
      Philip<br>
      <br>
      <div class="moz-cite-prefix">On 05/21/2015 04:38 PM, Nick Lewycky
        wrote:<br>
      </div>
      <blockquote
cite="mid:CADbEz-hgwfD3zFKSdddGZxK1GZbjZod2XrKqcsZQz4K7Es8avA@mail.gmail.com"
        type="cite">
        <div dir="ltr">
          <div class="gmail_extra">
            <div class="gmail_quote">On 18 May 2015 at 11:07, Sanjoy Das
              <span dir="ltr"><<a moz-do-not-send="true"
                  href="mailto:sanjoy@playingwithpointers.com"
                  target="_blank">sanjoy@playingwithpointers.com</a>></span>
              wrote:<br>
              <blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Author:

                sanjoy<br>
                Date: Mon May 18 13:07:00 2015<br>
                New Revision: 237593<br>
                <br>
                URL: <a moz-do-not-send="true"
href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject-3Frev-3D237593-26view-3Drev&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=EZRvoJai0V1ZEULFLl3UFBFw3GpoHtruFDOok84hYrI&s=4QqYr7GqSrZjVxTSY4zWHbjeCHYmt-2bkaDpOtpbsM8&e="
                  target="_blank">http://llvm.org/viewvc/llvm-project?rev=237593&view=rev</a><br>
                Log:<br>
                Exploit dereferenceable_or_null attribute in LICM pass<br>
                <br>
                Summary:<br>
                Allow hoisting of loads from values marked with
                dereferenceable_or_null<br>
                attribute. For values marked with the attribute perform<br>
                context-sensitive analysis to determine whether it's
                known-non-null or<br>
                not.<br>
              </blockquote>
              <div><br>
              </div>
              <div>This commit caused PR23608, see the testcase in that
                PR.</div>
              <div><br>
              </div>
              <blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">-///

                Only sink or hoist an instruction if it is not a
                trapping instruction<br>
                +/// Only sink or hoist an instruction if it is not a
                trapping instruction,<br>
                +/// or if the instruction is known not to trap when
                moved to the preheader.<br>
                 /// or if it is a trapping instruction and is
                guaranteed to execute.<br>
                -///<br>
                -static bool isSafeToExecuteUnconditionally(const
                Instruction &Inst,<br>
                +static bool isSafeToExecuteUnconditionally(const
                Instruction &Inst,<br>
                                                            const
                DominatorTree *DT,<br>
                +                                           const
                TargetLibraryInfo *TLI,<br>
                                                            const Loop
                *CurLoop,<br>
                                                            const
                LICMSafetyInfo *SafetyInfo) {<br>
                -  // If it is not a trapping instruction, it is always
                safe to hoist.<br>
                -  if (isSafeToSpeculativelyExecute(&Inst))<br>
                +  const Instruction *CtxI =
                CurLoop->getLoopPreheader()->getTerminator();<br>
              </blockquote>
              <div><br>
              </div>
              <div>A Loop* is not guaranteed to have a preheader, in
                which case CurLoop->getLoopPreheader() will return
                null.</div>
              <div><br>
              </div>
              <div>Nick</div>
              <div> </div>
              <blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">+ 

                if (isSafeToSpeculativelyExecute(&Inst, CtxI, DT,
                TLI))<br>
                     return true;<br>
                <br>
                   return isGuaranteedToExecute(Inst, DT, CurLoop,
                SafetyInfo);<br>
              </blockquote>
              <blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><br>
              </blockquote>
            </div>
          </div>
        </div>
        <br>
        <fieldset class="mimeAttachmentHeader"></fieldset>
        <br>
        <pre wrap="">_______________________________________________
llvm-commits mailing list
<a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a>
<a moz-do-not-send="true" class="moz-txt-link-freetext" href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a>
</pre>
      </blockquote>
      <br>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
llvm-commits mailing list
<a class="moz-txt-link-abbreviated" href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a>
<a class="moz-txt-link-freetext" href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>