opt: Add option to strip or add llvm value names

llvm-svn: 240583
This commit is contained in:
Matthias Braun 2015-06-24 20:03:33 +00:00
parent a43ec6b1f8
commit 7c02bf5cdb

View File

@ -104,6 +104,12 @@ static cl::opt<bool>
StripDebug("strip-debug",
cl::desc("Strip debugger symbol info from translation unit"));
static cl::opt<bool>
StripValueNames("strip-value-names", cl::desc("Remove llvm value names"));
static cl::opt<bool>
NameValues("name-values", cl::desc("Give anonymous llvm values a name"));
static cl::opt<bool>
DisableInline("disable-inlining", cl::desc("Do not run the inliner pass"));
@ -281,6 +287,37 @@ static TargetMachine* GetTargetMachine(Triple TheTriple, StringRef CPUStr,
GetCodeGenOptLevel());
}
static void removeValueNames(Module &Mod) {
for (Function &F : Mod) {
for (BasicBlock &BB : F) {
BB.setName("");
for (Instruction &I : BB)
I.setName("");
}
}
}
static void nameValuesInFunction(Function &F) {
bool FirstBB = true;
for (BasicBlock &BB : F) {
if (!BB.hasName())
BB.setName(FirstBB ? "entry" : "BB");
FirstBB = false;
for (Instruction &I : BB) {
if (I.getType()->isVoidTy())
continue;
if (!I.hasName())
I.setName("v");
}
}
}
static void nameValues(Module &Mod) {
for (Function &F : Mod)
nameValuesInFunction(F);
}
#ifdef LINK_POLLY_INTO_TOOLS
namespace polly {
void initializePollyPasses(llvm::PassRegistry &Registry);
@ -351,6 +388,12 @@ int main(int argc, char **argv) {
if (StripDebug)
StripDebugInfo(*M);
if (StripValueNames)
removeValueNames(*M);
if (NameValues)
nameValues(*M);
// Immediately run the verifier to catch any problems before starting up the
// pass pipelines. Otherwise we can crash on broken code during
// doInitialization().