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 19235633Sdimvoid MachinePassRegistryListener::anchor() { } 20193323Sed 21245431Sdim/// setDefault - Set the default constructor by name. 22245431Sdimvoid MachinePassRegistry::setDefault(StringRef Name) { 23245431Sdim MachinePassCtor Ctor = 0; 24245431Sdim for(MachinePassRegistryNode *R = getList(); R; R = R->getNext()) { 25245431Sdim if (R->getName() == Name) { 26245431Sdim Ctor = R->getCtor(); 27245431Sdim break; 28245431Sdim } 29245431Sdim } 30245431Sdim assert(Ctor && "Unregistered pass name"); 31245431Sdim setDefault(Ctor); 32245431Sdim} 33245431Sdim 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