[llvm-commits] [llvm] r55230 - in /llvm/trunk: include/llvm/LinkAllPasses.h include/llvm/Transforms/Scalar.h lib/Transforms/Utils/InstructionNamer.cpp
Chris Lattner
sabre at nondot.org
Fri Aug 22 23:07:03 PDT 2008
Author: lattner
Date: Sat Aug 23 01:07:02 2008
New Revision: 55230
URL: http://llvm.org/viewvc/llvm-project?rev=55230&view=rev
Log:
Add a new trivial -inst-namer pass which makes it possible to diff the
before/after effects of a pass, crazy!
Added:
llvm/trunk/lib/Transforms/Utils/InstructionNamer.cpp
Modified:
llvm/trunk/include/llvm/LinkAllPasses.h
llvm/trunk/include/llvm/Transforms/Scalar.h
Modified: llvm/trunk/include/llvm/LinkAllPasses.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/LinkAllPasses.h?rev=55230&r1=55229&r2=55230&view=diff
==============================================================================
--- llvm/trunk/include/llvm/LinkAllPasses.h (original)
+++ llvm/trunk/include/llvm/LinkAllPasses.h Sat Aug 23 01:07:02 2008
@@ -115,6 +115,7 @@
(void) llvm::createLoopDeletionPass();
(void) llvm::createPostDomTree();
(void) llvm::createPostDomFrontier();
+ (void) llvm::createInstructionNamerPass();
(void)new llvm::IntervalPartition();
(void)new llvm::FindUsedTypes();
Modified: llvm/trunk/include/llvm/Transforms/Scalar.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Transforms/Scalar.h?rev=55230&r1=55229&r2=55230&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Transforms/Scalar.h (original)
+++ llvm/trunk/include/llvm/Transforms/Scalar.h Sat Aug 23 01:07:02 2008
@@ -325,6 +325,13 @@
//
FunctionPass *createCodeGenPreparePass(const TargetLowering *TLI = 0);
+
+//===----------------------------------------------------------------------===//
+//
+// InstructionNamer - Give any unnamed non-void instructions "tmp" names.
+//
+FunctionPass *createInstructionNamerPass();
+
} // End llvm namespace
#endif
Added: llvm/trunk/lib/Transforms/Utils/InstructionNamer.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Utils/InstructionNamer.cpp?rev=55230&view=auto
==============================================================================
--- llvm/trunk/lib/Transforms/Utils/InstructionNamer.cpp (added)
+++ llvm/trunk/lib/Transforms/Utils/InstructionNamer.cpp Sat Aug 23 01:07:02 2008
@@ -0,0 +1,49 @@
+//===- InstructionNamer.cpp - Give anonymous instructions names -----------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This is a little utility pass that gives instructions names, this is mostly
+// useful when diffing the effect of an optimization because deleting an
+// unnamed instruction can change all other instruction numbering, making the
+// diff very noisy.
+//
+//===----------------------------------------------------------------------===//
+
+#include "llvm/Transforms/Scalar.h"
+#include "llvm/Function.h"
+#include "llvm/Pass.h"
+#include "llvm/Type.h"
+using namespace llvm;
+
+namespace {
+ struct InstNamer : public FunctionPass {
+ static char ID; // Pass identification, replacement for typeid
+ InstNamer() : FunctionPass(&ID) {}
+
+ bool runOnFunction(Function &F) {
+ for (Function::iterator BB = F.begin(), E = F.end(); BB != E; ++BB)
+ for (BasicBlock::iterator I = BB->begin(), E = BB->end(); I != E; ++I)
+ if (!I->hasName() && I->getType() != Type::VoidTy)
+ I->setName("tmp");
+ return true;
+ }
+ };
+
+ char InstNamer::ID = 0;
+ static RegisterPass<InstNamer> X("instnamer",
+ "Assign names to anonymous instructions");
+}
+
+
+//===----------------------------------------------------------------------===//
+//
+// InstructionNamer - Give any unnamed non-void instructions "tmp" names.
+//
+FunctionPass *llvm::createInstructionNamerPass() {
+ return new InstNamer();
+}
More information about the llvm-commits
mailing list