[llvm-commits] CVS: llvm/lib/CodeGen/MachinePassRegistry.cpp Passes.cpp RegAllocLinearScan.cpp RegAllocLocal.cpp RegAllocSimple.cpp
Jim Laskey
jlaskey at apple.com
Wed Aug 2 05:30:39 PDT 2006
Changes in directory llvm/lib/CodeGen:
MachinePassRegistry.cpp updated: 1.2 -> 1.3
Passes.cpp updated: 1.20 -> 1.21
RegAllocLinearScan.cpp updated: 1.126 -> 1.127
RegAllocLocal.cpp updated: 1.84 -> 1.85
RegAllocSimple.cpp updated: 1.71 -> 1.72
---
Log message:
Final polish on machine pass registries.
---
Diffs of the changes: (+47 -26)
MachinePassRegistry.cpp | 32 +++++++++++++++++++-------------
Passes.cpp | 35 +++++++++++++++++++++++++----------
RegAllocLinearScan.cpp | 2 +-
RegAllocLocal.cpp | 2 +-
RegAllocSimple.cpp | 2 +-
5 files changed, 47 insertions(+), 26 deletions(-)
Index: llvm/lib/CodeGen/MachinePassRegistry.cpp
diff -u llvm/lib/CodeGen/MachinePassRegistry.cpp:1.2 llvm/lib/CodeGen/MachinePassRegistry.cpp:1.3
--- llvm/lib/CodeGen/MachinePassRegistry.cpp:1.2 Tue Aug 1 13:29:48 2006
+++ llvm/lib/CodeGen/MachinePassRegistry.cpp Wed Aug 2 07:30:23 2006
@@ -16,20 +16,26 @@
using namespace llvm;
-
-//===---------------------------------------------------------------------===//
-///
-/// RegisterRegAlloc class - Track the registration of register allocators.
+
+/// Add - Adds a function pass to the registration list.
///
-//===---------------------------------------------------------------------===//
-MachinePassRegistry<RegisterRegAlloc::FunctionPassCtor>
-RegisterRegAlloc::Registry;
+void MachinePassRegistry::Add(MachinePassRegistryNode *Node) {
+ Node->setNext(List);
+ List = Node;
+ if (Listener) Listener->NotifyAdd(Node->getName(),
+ Node->getCtor(),
+ Node->getDescription());
+}
-//===---------------------------------------------------------------------===//
-///
-/// RegisterScheduler class - Track the registration of instruction schedulers.
+/// Remove - Removes a function pass from the registration list.
///
-//===---------------------------------------------------------------------===//
-MachinePassRegistry<RegisterScheduler::FunctionPassCtor>
-RegisterScheduler::Registry;
+void MachinePassRegistry::Remove(MachinePassRegistryNode *Node) {
+ for (MachinePassRegistryNode **I = &List; *I; I = (*I)->getNextAddress()) {
+ if (*I == Node) {
+ if (Listener) Listener->NotifyRemove(Node->getName());
+ *I = (*I)->getNext();
+ break;
+ }
+ }
+}
Index: llvm/lib/CodeGen/Passes.cpp
diff -u llvm/lib/CodeGen/Passes.cpp:1.20 llvm/lib/CodeGen/Passes.cpp:1.21
--- llvm/lib/CodeGen/Passes.cpp:1.20 Tue Aug 1 13:29:48 2006
+++ llvm/lib/CodeGen/Passes.cpp Wed Aug 2 07:30:23 2006
@@ -12,31 +12,46 @@
//
//===---------------------------------------------------------------------===//
-#include "llvm/CodeGen/MachinePassRegistry.h"
+#include "llvm/CodeGen/RegAllocRegistry.h"
#include "llvm/CodeGen/Passes.h"
-#include "llvm/Support/CommandLine.h"
#include <iostream>
using namespace llvm;
+//===---------------------------------------------------------------------===//
+///
+/// RegisterRegAlloc class - Track the registration of register allocators.
+///
+//===---------------------------------------------------------------------===//
+MachinePassRegistry RegisterRegAlloc::Registry;
+
+
+//===---------------------------------------------------------------------===//
+///
+/// RegAlloc command line options.
+///
+//===---------------------------------------------------------------------===//
namespace {
- cl::opt<const char *, false, RegisterPassParser<RegisterRegAlloc> >
+ cl::opt<RegisterRegAlloc::FunctionPassCtor, false,
+ RegisterPassParser<RegisterRegAlloc> >
RegAlloc("regalloc",
- cl::init("linearscan"),
+ cl::init(createLinearScanRegisterAllocator),
cl::desc("Register allocator to use: (default = linearscan)"));
}
+
+//===---------------------------------------------------------------------===//
+///
+/// createRegisterAllocator - choose the appropriate register allocator.
+///
+//===---------------------------------------------------------------------===//
FunctionPass *llvm::createRegisterAllocator() {
RegisterRegAlloc::FunctionPassCtor Ctor = RegisterRegAlloc::getDefault();
if (!Ctor) {
- Ctor = RegisterRegAlloc::FindCtor(RegAlloc);
- assert(Ctor && "No register allocator found");
- if (!Ctor) Ctor = RegisterRegAlloc::FirstCtor();
- RegisterRegAlloc::setDefault(Ctor);
+ Ctor = RegAlloc;
+ RegisterRegAlloc::setDefault(RegAlloc);
}
- assert(Ctor && "No register allocator found");
-
return Ctor();
}
Index: llvm/lib/CodeGen/RegAllocLinearScan.cpp
diff -u llvm/lib/CodeGen/RegAllocLinearScan.cpp:1.126 llvm/lib/CodeGen/RegAllocLinearScan.cpp:1.127
--- llvm/lib/CodeGen/RegAllocLinearScan.cpp:1.126 Tue Aug 1 09:21:23 2006
+++ llvm/lib/CodeGen/RegAllocLinearScan.cpp Wed Aug 2 07:30:23 2006
@@ -18,8 +18,8 @@
#include "llvm/Function.h"
#include "llvm/CodeGen/MachineFunctionPass.h"
#include "llvm/CodeGen/MachineInstr.h"
-#include "llvm/CodeGen/MachinePassRegistry.h"
#include "llvm/CodeGen/Passes.h"
+#include "llvm/CodeGen/RegAllocRegistry.h"
#include "llvm/CodeGen/SSARegMap.h"
#include "llvm/Target/MRegisterInfo.h"
#include "llvm/Target/TargetMachine.h"
Index: llvm/lib/CodeGen/RegAllocLocal.cpp
diff -u llvm/lib/CodeGen/RegAllocLocal.cpp:1.84 llvm/lib/CodeGen/RegAllocLocal.cpp:1.85
--- llvm/lib/CodeGen/RegAllocLocal.cpp:1.84 Tue Aug 1 09:21:23 2006
+++ llvm/lib/CodeGen/RegAllocLocal.cpp Wed Aug 2 07:30:23 2006
@@ -18,8 +18,8 @@
#include "llvm/CodeGen/MachineInstr.h"
#include "llvm/CodeGen/SSARegMap.h"
#include "llvm/CodeGen/MachineFrameInfo.h"
-#include "llvm/CodeGen/MachinePassRegistry.h"
#include "llvm/CodeGen/LiveVariables.h"
+#include "llvm/CodeGen/RegAllocRegistry.h"
#include "llvm/Target/TargetInstrInfo.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/Support/CommandLine.h"
Index: llvm/lib/CodeGen/RegAllocSimple.cpp
diff -u llvm/lib/CodeGen/RegAllocSimple.cpp:1.71 llvm/lib/CodeGen/RegAllocSimple.cpp:1.72
--- llvm/lib/CodeGen/RegAllocSimple.cpp:1.71 Tue Aug 1 09:21:23 2006
+++ llvm/lib/CodeGen/RegAllocSimple.cpp Wed Aug 2 07:30:23 2006
@@ -20,7 +20,7 @@
#include "llvm/CodeGen/MachineInstr.h"
#include "llvm/CodeGen/SSARegMap.h"
#include "llvm/CodeGen/MachineFrameInfo.h"
-#include "llvm/CodeGen/MachinePassRegistry.h"
+#include "llvm/CodeGen/RegAllocRegistry.h"
#include "llvm/Target/TargetInstrInfo.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/Support/Debug.h"
More information about the llvm-commits
mailing list