1193323Sed//===-- CodeGen/MachineInstr.cpp ------------------------------------------===// 2193323Sed// 3193323Sed// The LLVM Compiler Infrastructure 4193323Sed// 5193323Sed// This file is distributed under the University of Illinois Open Source 6193323Sed// License. See LICENSE.TXT for details. 7193323Sed// 8193323Sed//===----------------------------------------------------------------------===// 9193323Sed// 10193323Sed// This file contains the machine function pass registry for register allocators 11193323Sed// and instruction schedulers. 12193323Sed// 13193323Sed//===----------------------------------------------------------------------===// 14193323Sed 15193323Sed#include "llvm/CodeGen/MachinePassRegistry.h" 16193323Sed 17193323Sedusing namespace llvm; 18193323Sed 19234353Sdimvoid MachinePassRegistryListener::anchor() { } 20193323Sed 21239462Sdim/// setDefault - Set the default constructor by name. 22239462Sdimvoid MachinePassRegistry::setDefault(StringRef Name) { 23239462Sdim MachinePassCtor Ctor = 0; 24239462Sdim for(MachinePassRegistryNode *R = getList(); R; R = R->getNext()) { 25239462Sdim if (R->getName() == Name) { 26239462Sdim Ctor = R->getCtor(); 27239462Sdim break; 28239462Sdim } 29239462Sdim } 30239462Sdim assert(Ctor && "Unregistered pass name"); 31239462Sdim setDefault(Ctor); 32239462Sdim} 33239462Sdim 34193323Sed/// Add - Adds a function pass to the registration list. 35193323Sed/// 36193323Sedvoid MachinePassRegistry::Add(MachinePassRegistryNode *Node) { 37193323Sed Node->setNext(List); 38193323Sed List = Node; 39193323Sed if (Listener) Listener->NotifyAdd(Node->getName(), 40193323Sed Node->getCtor(), 41193323Sed Node->getDescription()); 42193323Sed} 43193323Sed 44193323Sed 45193323Sed/// Remove - Removes a function pass from the registration list. 46193323Sed/// 47193323Sedvoid MachinePassRegistry::Remove(MachinePassRegistryNode *Node) { 48193323Sed for (MachinePassRegistryNode **I = &List; *I; I = (*I)->getNextAddress()) { 49193323Sed if (*I == Node) { 50193323Sed if (Listener) Listener->NotifyRemove(Node->getName()); 51193323Sed *I = (*I)->getNext(); 52193323Sed break; 53193323Sed } 54193323Sed } 55193323Sed} 56