<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style>
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">You should use the revert instructions in <a href="http://llvm.org/docs/GettingStarted.html#for-developers-to-work-with-git-svn">
http://llvm.org/docs/GettingStarted.html#for-developers-to-work-with-git-svn</a> so that you end up with an SVN revision number instead of a git hash in your commit message.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="margin-left:.5in"><b><span style="font-size:12.0pt;color:black">From:
</span></b><span style="font-size:12.0pt;color:black">llvm-commits <llvm-commits-bounces@lists.llvm.org> on behalf of Xin Tong via llvm-commits <llvm-commits@lists.llvm.org><br>
<b>Reply-To: </b>Xin Tong <trent.xin.tong@gmail.com><br>
<b>Date: </b>Monday, June 18, 2018 at 4:25 PM<br>
<b>To: </b>"llvm-commits@lists.llvm.org" <llvm-commits@lists.llvm.org><br>
<b>Subject: </b>[llvm] r334993 - Revert "Simplify blockaddress usage before giving up in MergeBlockIntoPredecessor"<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Author: trentxintong<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Date: Mon Jun 18 16:20:08 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">New Revision: 334993<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject-3Frev-3D334993-26view-3Drev&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=h3HKGcX0-trl93_e29E2Foso6t9GNBoAdDczCRJmg1I&s=2qYaafNd6i42bQ2Xwvnip27p30pkuvnKpL5QywXf_A8&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject-3Frev-3D334993-26view-3Drev&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=h3HKGcX0-trl93_e29E2Foso6t9GNBoAdDczCRJmg1I&s=2qYaafNd6i42bQ2Xwvnip27p30pkuvnKpL5QywXf_A8&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Log:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Revert "Simplify blockaddress usage before giving up in MergeBlockIntoPredecessor"<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">This reverts commit f976cf4cca0794267f28b54e468007fd476d37d9.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">I am reverting this because it causes break in a few bots and its going<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">to take me sometime to look at this.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    llvm/trunk/lib/Transforms/Utils/BasicBlockUtils.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    llvm/trunk/test/Transforms/SimplifyCFG/dce-cond-after-folding-terminator.ll<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    llvm/trunk/unittests/Transforms/Utils/BasicBlockUtils.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: llvm/trunk/lib/Transforms/Utils/BasicBlockUtils.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_lib_Transforms_Utils_BasicBlockUtils.cpp-3Frev-3D334993-26r1-3D334992-26r2-3D334993-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=h3HKGcX0-trl93_e29E2Foso6t9GNBoAdDczCRJmg1I&s=1XbIuLzOOqRkP_cDH4VZRJ-egaPnK9G9gjIV3NNh618&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_lib_Transforms_Utils_BasicBlockUtils.cpp-3Frev-3D334993-26r1-3D334992-26r2-3D334993-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=h3HKGcX0-trl93_e29E2Foso6t9GNBoAdDczCRJmg1I&s=1XbIuLzOOqRkP_cDH4VZRJ-egaPnK9G9gjIV3NNh618&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- llvm/trunk/lib/Transforms/Utils/BasicBlockUtils.cpp (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ llvm/trunk/lib/Transforms/Utils/BasicBlockUtils.cpp Mon Jun 18 16:20:08 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -119,14 +119,7 @@ bool llvm::MergeBlockIntoPredecessor(Bas<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">                                      LoopInfo *LI,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">                                      MemoryDependenceResults *MemDep) {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   // Don't merge away blocks who have their address taken.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-  if (BB->hasAddressTaken()) {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-    // If the block has its address taken, it may be a tree of dead constants<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-    // hanging off of it.  These shouldn't keep the block alive.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-    BlockAddress *BA = BlockAddress::get(BB);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-    BA->removeDeadConstantUsers();<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-    if (!BA->use_empty())<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-      return false;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-  }<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  if (BB->hasAddressTaken()) return false;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   // Can't merge if there are multiple predecessors, or no predecessors.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   BasicBlock *PredBB = BB->getUniquePredecessor();<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: llvm/trunk/test/Transforms/SimplifyCFG/dce-cond-after-folding-terminator.ll<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_test_Transforms_SimplifyCFG_dce-2Dcond-2Dafter-2Dfolding-2Dterminator.ll-3Frev-3D334993-26r1-3D334992-26r2-3D334993-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=h3HKGcX0-trl93_e29E2Foso6t9GNBoAdDczCRJmg1I&s=XsJTlGj2vpGLC8P2J7zUGT2-ikb0IuuqssWqqua-CO8&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_test_Transforms_SimplifyCFG_dce-2Dcond-2Dafter-2Dfolding-2Dterminator.ll-3Frev-3D334993-26r1-3D334992-26r2-3D334993-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=h3HKGcX0-trl93_e29E2Foso6t9GNBoAdDczCRJmg1I&s=XsJTlGj2vpGLC8P2J7zUGT2-ikb0IuuqssWqqua-CO8&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- llvm/trunk/test/Transforms/SimplifyCFG/dce-cond-after-folding-terminator.ll (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ llvm/trunk/test/Transforms/SimplifyCFG/dce-cond-after-folding-terminator.ll Mon Jun 18 16:20:08 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -37,7 +37,10 @@ define void @test_indirectbr(i32 %x) {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">entry:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">; CHECK-LABEL: @test_indirectbr(<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">; CHECK-NEXT: entry:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-; CHECK-NEXT: ret void<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+; Ideally this should now check:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+;   CHK-NEXT: ret void<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+; But that doesn't happen yet. Instead:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+; CHECK-NEXT: br label %L1<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   %label = bitcast i8* blockaddress(@test_indirectbr, %L1) to i8*<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   indirectbr i8* %label, [label %L1, label %L2]<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: llvm/trunk/unittests/Transforms/Utils/BasicBlockUtils.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_unittests_Transforms_Utils_BasicBlockUtils.cpp-3Frev-3D334993-26r1-3D334992-26r2-3D334993-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=h3HKGcX0-trl93_e29E2Foso6t9GNBoAdDczCRJmg1I&s=uF13OrC35SzcMBdDs5ZpeDqDLkeaz9fhNdujwaEiyMw&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_unittests_Transforms_Utils_BasicBlockUtils.cpp-3Frev-3D334993-26r1-3D334992-26r2-3D334993-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=h3HKGcX0-trl93_e29E2Foso6t9GNBoAdDczCRJmg1I&s=uF13OrC35SzcMBdDs5ZpeDqDLkeaz9fhNdujwaEiyMw&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- llvm/trunk/unittests/Transforms/Utils/BasicBlockUtils.cpp (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ llvm/trunk/unittests/Transforms/Utils/BasicBlockUtils.cpp Mon Jun 18 16:20:08 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -50,31 +50,3 @@ TEST(BasicBlockUtils, SplitBlockPredeces<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   SplitBlockPredecessors(&F->getEntryBlock(), {}, "split.entry", &DT);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   EXPECT_TRUE(DT.verify());<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">}<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-TEST(BasicBlockUtils, MergeBlockIntoPredecessor) {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-  LLVMContext C;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-  std::unique_ptr<Module> M = parseIR(C,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-                                      R"(<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-      define i32 @f(i8* %str) {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-      entry:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-        %dead = extractvalue [1 x i8*] [ i8* blockaddress(@f, %L0) ], 0<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-        br label %L0<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-      L0:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-        ret i32 0<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-      }<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-      )");<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-  // First remove the dead instruction to empty the usage of the constant<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-  // containing blockaddress(@f, %L0)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-  Function *F = M->getFunction("f");<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-  auto BBI = F->begin();<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-  Instruction *DI = &*((*BBI).begin());<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-  EXPECT_TRUE(DI->use_empty());<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-  DI->eraseFromParent();<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-  // Get L0 and make sure that it can be merged into entry block.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-  ++BBI;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-  BasicBlock *BB = &(*BBI);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-  EXPECT_TRUE(MergeBlockIntoPredecessor(BB));<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-}<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">_______________________________________________<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">llvm-commits mailing list<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.llvm.org_cgi-2Dbin_mailman_listinfo_llvm-2Dcommits&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=h3HKGcX0-trl93_e29E2Foso6t9GNBoAdDczCRJmg1I&s=ll3nyaoQ2HBe9WbfPnyHr9Exod9O9Xss7ddce0mEIIw&e=">https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.llvm.org_cgi-2Dbin_mailman_listinfo_llvm-2Dcommits&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=h3HKGcX0-trl93_e29E2Foso6t9GNBoAdDczCRJmg1I&s=ll3nyaoQ2HBe9WbfPnyHr9Exod9O9Xss7ddce0mEIIw&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
</div>
</body>
</html>