<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="Title" content="">
<meta name="Keywords" content="">
<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;}
span.EmailStyle17
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
span.msoIns
        {mso-style-type:export-only;
        mso-style-name:"";
        text-decoration:underline;
        color:teal;}
.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 bgcolor="white" lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">Should this be merged into 6.0?<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 Dimitry Andric via llvm-commits <llvm-commits@lists.llvm.org><br>
<b>Reply-To: </b>Dimitry Andric <dimitry@andric.com><br>
<b>Date: </b>Thursday, January 11, 2018 at 12:04 AM<br>
<b>To: </b>"llvm-commits@lists.llvm.org" <llvm-commits@lists.llvm.org><br>
<b>Subject: </b>[lld] r322264 - Fix thread race between SectionPiece's OutputOff and Live members<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: dim<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Date: Thu Jan 11 00:03:22 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">New Revision: 322264<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-3D322264-26view-3Drev&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=Xzeycr3aeaH2s-dbwn36tREoztaX3UBAqTs_Puspq3c&s=l5swfwKkexIb_mVxncjt1ygki08cGq_Xj6D46fD5OqM&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject-3Frev-3D322264-26view-3Drev&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=Xzeycr3aeaH2s-dbwn36tREoztaX3UBAqTs_Puspq3c&s=l5swfwKkexIb_mVxncjt1ygki08cGq_Xj6D46fD5OqM&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">Fix thread race between SectionPiece's OutputOff and Live members<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">Summary:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">As reported in bug 35788, rL316280 reintroduces a race between two<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">members of SectionPiece, which share the same 64 bit memory location.<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">To fix the race, check the hash before checking the Live member, as<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">suggested by Rafael.<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">Reviewers: ruiu, rafael<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">Reviewed By: ruiu<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">Subscribers: smeenai, emaste, llvm-commits<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">Differential Revision: <a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__reviews.llvm.org_D41884&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=Xzeycr3aeaH2s-dbwn36tREoztaX3UBAqTs_Puspq3c&s=dy5VuBxeCmtDUygIahWUYtVcPQTAypaA-1W-lJsyTMc&e=">
https://urldefense.proofpoint.com/v2/url?u=https-3A__reviews.llvm.org_D41884&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=Xzeycr3aeaH2s-dbwn36tREoztaX3UBAqTs_Puspq3c&s=dy5VuBxeCmtDUygIahWUYtVcPQTAypaA-1W-lJsyTMc&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">Modified:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    lld/trunk/ELF/SyntheticSections.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: lld/trunk/ELF/SyntheticSections.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_lld_trunk_ELF_SyntheticSections.cpp-3Frev-3D322264-26r1-3D322263-26r2-3D322264-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=Xzeycr3aeaH2s-dbwn36tREoztaX3UBAqTs_Puspq3c&s=Y5724oLNQOEvmUSt4gRXiCeTBv9BgWDLqZc-WjB_LyQ&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_lld_trunk_ELF_SyntheticSections.cpp-3Frev-3D322264-26r1-3D322263-26r2-3D322264-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=Xzeycr3aeaH2s-dbwn36tREoztaX3UBAqTs_Puspq3c&s=Y5724oLNQOEvmUSt4gRXiCeTBv9BgWDLqZc-WjB_LyQ&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">--- lld/trunk/ELF/SyntheticSections.cpp (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ lld/trunk/ELF/SyntheticSections.cpp Thu Jan 11 00:03:22 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -2451,10 +2451,8 @@ void MergeNoTailSection::finalizeContent<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   parallelForEachN(0, Concurrency, [&](size_t ThreadId) {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     for (MergeInputSection *Sec : Sections) {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       for (size_t I = 0, E = Sec->Pieces.size(); I != E; ++I) {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-        if (!Sec->Pieces[I].Live)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-          continue;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">         size_t ShardId = getShardId(Sec->Pieces[I].Hash);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-        if ((ShardId & (Concurrency - 1)) == ThreadId)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+        if ((ShardId & (Concurrency - 1)) == ThreadId && Sec->Pieces[I].Live)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">           Sec->Pieces[I].OutputOff = Shards[ShardId].add(Sec->getData(I));<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">_______________________________________________<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=Xzeycr3aeaH2s-dbwn36tREoztaX3UBAqTs_Puspq3c&s=YZq7G3sWEhLNixHYrxl6zXBuu0ZSTRGlLhLss21Ce2E&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=Xzeycr3aeaH2s-dbwn36tREoztaX3UBAqTs_Puspq3c&s=YZq7G3sWEhLNixHYrxl6zXBuu0ZSTRGlLhLss21Ce2E&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>