For PR780:
1. Fix the macros in IncludeFile.h to put everything in the llvm namespace
2. Replace the previous explicit mechanism in all the .h and .cpp files
with the macros in IncludeFile.h
This gets us a consistent mechanism throughout LLVM for ensuring linkage.
Next step is to make sure its used in enough places.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28715 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Analysis/IPA/CallGraph.cpp b/lib/Analysis/IPA/CallGraph.cpp
index f8846d3..78bb735 100644
--- a/lib/Analysis/IPA/CallGraph.cpp
+++ b/lib/Analysis/IPA/CallGraph.cpp
@@ -19,8 +19,6 @@
#include <iostream>
using namespace llvm;
-int llvm::BasicCallGraphStub;
-
static bool isOnlyADirectCall(Function *F, CallSite CS) {
if (!CS.getInstruction()) return false;
for (CallSite::arg_iterator I = CS.arg_begin(), E = CS.arg_end(); I != E; ++I)
@@ -256,10 +254,6 @@
return CGN = new CallGraphNode(const_cast<Function*>(F));
}
-
-
-int CallGraph::stub; // to ensure linkage of this file.
-
void CallGraphNode::print(std::ostream &OS) const {
if (Function *F = getFunction())
OS << "Call graph node for function: '" << F->getName() <<"'\n";
@@ -297,3 +291,6 @@
--i; --e;
}
}
+
+// Enuse that users of CallGraph.h also link with this file
+DEFINING_FILE_FOR(CallGraph)
diff --git a/lib/Analysis/IPA/FindUsedTypes.cpp b/lib/Analysis/IPA/FindUsedTypes.cpp
index f7efc7d..725cec4 100644
--- a/lib/Analysis/IPA/FindUsedTypes.cpp
+++ b/lib/Analysis/IPA/FindUsedTypes.cpp
@@ -24,9 +24,6 @@
static RegisterAnalysis<FindUsedTypes>
X("printusedtypes", "Find Used Types");
-// stub to help linkage
-int FindUsedTypes::stub; // to ensure linkage of this file
-
// IncorporateType - Incorporate one type and all of its subtypes into the
// collection of used types.
//
@@ -104,3 +101,6 @@
E = UsedTypes.end(); I != E; ++I)
o << " " << **I << "\n";
}
+
+// Ensure that this file gets linked in when FindUsedTypes.h is used.
+DEFINING_FILE_FOR(FindUsedTypes)