From bd9174cad0b8b58be2273fdc6d151fc755828cf5 Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Wed, 26 Aug 2009 15:56:38 +0000 Subject: [PATCH] Move ProfileInfo::Edge's operator<< out of line. Among other benefits, this eliminates the ATTRIBUTE_USED, which wasn't being used in a manner acceptable to some GCC versions, according to the buildbots. llvm-svn: 80103 --- include/llvm/Analysis/ProfileInfo.h | 14 ++------------ lib/Analysis/ProfileInfo.cpp | 8 ++++++++ 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/include/llvm/Analysis/ProfileInfo.h b/include/llvm/Analysis/ProfileInfo.h index 59ad9077a0a..16bfc1351c7 100644 --- a/include/llvm/Analysis/ProfileInfo.h +++ b/include/llvm/Analysis/ProfileInfo.h @@ -22,8 +22,6 @@ #define LLVM_ANALYSIS_PROFILEINFO_H #include "llvm/BasicBlock.h" -#include "llvm/Support/raw_ostream.h" -#include "llvm/Support/Compiler.h" #include #include #include @@ -31,6 +29,7 @@ namespace llvm { class Function; class Pass; + class raw_ostream; /// ProfileInfo Class - This class holds and maintains profiling /// information for some unit of code. @@ -106,16 +105,7 @@ namespace llvm { /// it available to the optimizers. Pass *createProfileLoaderPass(const std::string &Filename); - static raw_ostream& operator<<(raw_ostream &O, - ProfileInfo::Edge E) ATTRIBUTE_USED; - static raw_ostream& operator<<(raw_ostream &O, - ProfileInfo::Edge E) { - O<<"("; - O<<(E.first?E.first->getNameStr():"0"); - O<<","; - O<<(E.second?E.second->getNameStr():"0"); - return O<<")"; - } + raw_ostream& operator<<(raw_ostream &O, ProfileInfo::Edge E); } // End llvm namespace diff --git a/lib/Analysis/ProfileInfo.cpp b/lib/Analysis/ProfileInfo.cpp index fdbf03cc34d..55c5cab7510 100644 --- a/lib/Analysis/ProfileInfo.cpp +++ b/lib/Analysis/ProfileInfo.cpp @@ -17,6 +17,7 @@ #include "llvm/Pass.h" #include "llvm/Support/CFG.h" #include "llvm/Support/Compiler.h" +#include "llvm/Support/raw_ostream.h" #include using namespace llvm; @@ -81,6 +82,13 @@ double ProfileInfo::getExecutionCount(const Function *F) { return Count; } +raw_ostream& llvm::operator<<(raw_ostream &O, ProfileInfo::Edge E) { + O << "("; + O << (E.first ? E.first->getNameStr() : "0"); + O << ","; + O << (E.second ? E.second->getNameStr() : "0"); + return O << ")"; +} //===----------------------------------------------------------------------===// // NoProfile ProfileInfo implementation