<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>