summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/IPO/Internalize.cpp
diff options
context:
space:
mode:
authorMehdi Amini <mehdi.amini@apple.com>2016-02-10 23:24:31 +0000
committerMehdi Amini <mehdi.amini@apple.com>2016-02-10 23:24:31 +0000
commitc87d7d02e146b4ce92a8d908a87ade973777e469 (patch)
tree20e1b57d0a619e911431256fab69c15c040018d8 /llvm/lib/Transforms/IPO/Internalize.cpp
parent0bfaa589f0ed91e3ac71868168d07344c5209ada (diff)
downloadbcm5719-llvm-c87d7d02e146b4ce92a8d908a87ade973777e469.tar.gz
bcm5719-llvm-c87d7d02e146b4ce92a8d908a87ade973777e469.zip
Use a StringSet in Internalize, and allow to create the pass from an existing one (NFC)
There is not reason to pass an array of "char *" to rebuild a set if the client already has one. From: Mehdi Amini <mehdi.amini@apple.com> llvm-svn: 260462
Diffstat (limited to 'llvm/lib/Transforms/IPO/Internalize.cpp')
-rw-r--r--llvm/lib/Transforms/IPO/Internalize.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/llvm/lib/Transforms/IPO/Internalize.cpp b/llvm/lib/Transforms/IPO/Internalize.cpp
index 21bb5d000bc..a57176f75b0 100644
--- a/llvm/lib/Transforms/IPO/Internalize.cpp
+++ b/llvm/lib/Transforms/IPO/Internalize.cpp
@@ -22,6 +22,7 @@
#include "llvm/Transforms/IPO.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/Statistic.h"
+#include "llvm/ADT/StringSet.h"
#include "llvm/Analysis/CallGraph.h"
#include "llvm/IR/Module.h"
#include "llvm/Pass.h"
@@ -54,11 +55,13 @@ APIList("internalize-public-api-list", cl::value_desc("list"),
namespace {
class InternalizePass : public ModulePass {
- std::set<std::string> ExternalNames;
+ StringSet<> ExternalNames;
+
public:
static char ID; // Pass identification, replacement for typeid
explicit InternalizePass();
explicit InternalizePass(ArrayRef<const char *> ExportList);
+ explicit InternalizePass(StringSet<> ExportList);
void LoadFile(const char *Filename);
bool maybeInternalize(GlobalValue &GV,
const std::set<const Comdat *> &ExternalComdats);
@@ -93,6 +96,9 @@ InternalizePass::InternalizePass(ArrayRef<const char *> ExportList)
}
}
+InternalizePass::InternalizePass(StringSet<> ExportList)
+ : ModulePass(ID), ExternalNames(std::move(ExportList)) {}
+
void InternalizePass::LoadFile(const char *Filename) {
// Load the APIFile...
std::ifstream In(Filename);
@@ -110,7 +116,7 @@ void InternalizePass::LoadFile(const char *Filename) {
}
static bool isExternallyVisible(const GlobalValue &GV,
- const std::set<std::string> &ExternalNames) {
+ const StringSet<> &ExternalNames) {
// Function must be defined here
if (GV.isDeclaration())
return true;
@@ -267,3 +273,7 @@ ModulePass *llvm::createInternalizePass() { return new InternalizePass(); }
ModulePass *llvm::createInternalizePass(ArrayRef<const char *> ExportList) {
return new InternalizePass(ExportList);
}
+
+ModulePass *llvm::createInternalizePass(StringSet<> ExportList) {
+ return new InternalizePass(std::move(ExportList));
+}
OpenPOWER on IntegriCloud