mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-11-03 14:21:30 +00:00 
			
		
		
		
	to name basic blocks "bb" instead of "BB", for consistency. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84502 91177308-0d34-0410-b5e6-96231b3b80d8
		
			
				
	
	
		
			64 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
//===- 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) {}
 | 
						|
    
 | 
						|
    void getAnalysisUsage(AnalysisUsage &Info) const {
 | 
						|
      Info.setPreservesAll();
 | 
						|
    }
 | 
						|
 | 
						|
    bool runOnFunction(Function &F) {
 | 
						|
      for (Function::arg_iterator AI = F.arg_begin(), AE = F.arg_end();
 | 
						|
           AI != AE; ++AI)
 | 
						|
        if (!AI->hasName() && AI->getType() != Type::getVoidTy(F.getContext()))
 | 
						|
          AI->setName("arg");
 | 
						|
 | 
						|
      for (Function::iterator BB = F.begin(), E = F.end(); BB != E; ++BB) {
 | 
						|
        if (!BB->hasName())
 | 
						|
          BB->setName("bb");
 | 
						|
        
 | 
						|
        for (BasicBlock::iterator I = BB->begin(), E = BB->end(); I != E; ++I)
 | 
						|
          if (!I->hasName() && I->getType() != Type::getVoidTy(F.getContext()))
 | 
						|
            I->setName("tmp");
 | 
						|
      }
 | 
						|
      return true;
 | 
						|
    }
 | 
						|
  };
 | 
						|
  
 | 
						|
  char InstNamer::ID = 0;
 | 
						|
  static RegisterPass<InstNamer> X("instnamer",
 | 
						|
                                   "Assign names to anonymous instructions");
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
const PassInfo *const llvm::InstructionNamerID = &X;
 | 
						|
//===----------------------------------------------------------------------===//
 | 
						|
//
 | 
						|
// InstructionNamer - Give any unnamed non-void instructions "tmp" names.
 | 
						|
//
 | 
						|
FunctionPass *llvm::createInstructionNamerPass() {
 | 
						|
  return new InstNamer();
 | 
						|
}
 |