From: Sean Silva Date: Thu, 16 Jun 2016 07:00:19 +0000 (+0000) Subject: Attempt to define friend function more portably. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3312f93c90bd771a0db550da264b33c3e6c062de;p=llvm Attempt to define friend function more portably. Patch written by Reid. I verified it locally with clang. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272875 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Transforms/Vectorize/SLPVectorizer.cpp b/lib/Transforms/Vectorize/SLPVectorizer.cpp index ca40bff4f97..774650b0c55 100644 --- a/lib/Transforms/Vectorize/SLPVectorizer.cpp +++ b/lib/Transforms/Vectorize/SLPVectorizer.cpp @@ -601,7 +601,6 @@ private: /// A list of blocks that we are going to CSE. SetVector CSEBlocks; -public: // Workaround for MSVC friend semantics. /// Contains all scheduling relevant data for an instruction. /// A ScheduleData either represents a single instruction or a member of an /// instruction bundle (= a group of instructions which is combined into a @@ -731,11 +730,13 @@ public: // Workaround for MSVC friend semantics. /// dry-run). bool IsScheduled; }; -private: #ifndef NDEBUG - friend raw_ostream &operator<<(raw_ostream &os, - const BoUpSLP::ScheduleData &SD); + friend inline raw_ostream &operator<<(raw_ostream &os, + const BoUpSLP::ScheduleData &SD) { + SD.dump(os); + return os; + } #endif /// Contains all scheduling data for a basic block. @@ -945,21 +946,9 @@ private: MapVector MinBWs; }; -#ifndef NDEBUG -raw_ostream &operator<<(raw_ostream &os, const BoUpSLP::ScheduleData &SD); -#endif - } // end namespace llvm } // end namespace slpvectorizer -#ifndef NDEBUG -raw_ostream &llvm::slpvectorizer::operator<<(raw_ostream &os, - const BoUpSLP::ScheduleData &SD) { - SD.dump(os); - return os; -} -#endif - void BoUpSLP::buildTree(ArrayRef Roots, ArrayRef UserIgnoreLst) { deleteTree();