<div dir="ltr">Hey Reid, any ideas about a better fix for this? GCC also gave me some issues that I fixed in r272767.<div>Am I just having a bad day or are friend declarations pretty much non-portable?<div><br></div><div>-- Sean Silva</div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jun 15, 2016 at 3:51 AM, Sean Silva via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: silvas<br>
Date: Wed Jun 15 05:51:40 2016<br>
New Revision: 272772<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=272772&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=272772&view=rev</a><br>
Log:<br>
Work around MSVC "friend" semantics.<br>
<br>
The error on clang-x86-win2008-selfhost is:<br>
<br>
C:\buildbot\slave-config\clang-x86-win2008-selfhost\llvm\lib\Transforms\Vectorize\SLPVectorizer.cpp(955) : error C2248: 'llvm::slpvectorizer::BoUpSLP::ScheduleData' : cannot access private struct declared in class 'llvm::slpvectorizer::BoUpSLP'<br>
C:\buildbot\slave-config\clang-x86-win2008-selfhost\llvm\lib\Transforms\Vectorize\SLPVectorizer.cpp(608) : see declaration of 'llvm::slpvectorizer::BoUpSLP::ScheduleData'<br>
C:\buildbot\slave-config\clang-x86-win2008-selfhost\llvm\lib\Transforms\Vectorize\SLPVectorizer.cpp(337) : see declaration of 'llvm::slpvectorizer::BoUpSLP'<br>
<br>
I reproduced this locally with both MSVC 2013 and MSVC 2015.<br>
<br>
Modified:<br>
llvm/trunk/lib/Transforms/Vectorize/SLPVectorizer.cpp<br>
<br>
Modified: llvm/trunk/lib/Transforms/Vectorize/SLPVectorizer.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Vectorize/SLPVectorizer.cpp?rev=272772&r1=272771&r2=272772&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Vectorize/SLPVectorizer.cpp?rev=272772&r1=272771&r2=272772&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Transforms/Vectorize/SLPVectorizer.cpp (original)<br>
+++ llvm/trunk/lib/Transforms/Vectorize/SLPVectorizer.cpp Wed Jun 15 05:51:40 2016<br>
@@ -601,6 +601,7 @@ private:<br>
/// A list of blocks that we are going to CSE.<br>
SetVector<BasicBlock *> CSEBlocks;<br>
<br>
+public: // Workaround for MSVC friend semantics.<br>
/// Contains all scheduling relevant data for an instruction.<br>
/// A ScheduleData either represents a single instruction or a member of an<br>
/// instruction bundle (= a group of instructions which is combined into a<br>
@@ -730,6 +731,7 @@ private:<br>
/// dry-run).<br>
bool IsScheduled;<br>
};<br>
+private:<br>
<br>
#ifndef NDEBUG<br>
friend raw_ostream &operator<<(raw_ostream &os,<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div>