aboutsummaryrefslogtreecommitdiff
path: root/include/llvm/Transforms/IPO/SimpleStructMutation.h
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2002-01-21 07:31:50 +0000
committerChris Lattner <sabre@nondot.org>2002-01-21 07:31:50 +0000
commitf4de63f65fa995e68e3cd268117ab065068be413 (patch)
tree2fd8cd44af0f23dafd94102c1c0152b1cd82fe4d /include/llvm/Transforms/IPO/SimpleStructMutation.h
parentaff5bcebb7fb9880e0a3518a8e7c999e738d531c (diff)
Implement a more powerful, simpler, pass system. This pass system can figure
out how to run a collection of passes optimially given their behaviors and charactaristics. Convert code to use it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1507 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/Transforms/IPO/SimpleStructMutation.h')
-rw-r--r--include/llvm/Transforms/IPO/SimpleStructMutation.h25
1 files changed, 15 insertions, 10 deletions
diff --git a/include/llvm/Transforms/IPO/SimpleStructMutation.h b/include/llvm/Transforms/IPO/SimpleStructMutation.h
index 77b962b107..181996d45b 100644
--- a/include/llvm/Transforms/IPO/SimpleStructMutation.h
+++ b/include/llvm/Transforms/IPO/SimpleStructMutation.h
@@ -1,22 +1,27 @@
-//===- llvm/Transforms/SwapStructContents.h - Permute Structs ----*- C++ -*--=//
+//===- llvm/Transforms/SimpleStructMutation.h - Permute Structs --*- C++ -*--=//
//
-// This pass does a simple transformation that swaps all of the elements of the
-// struct types in the program around.
+// This pass does is a wrapper that can do a few simple structure mutation
+// transformations.
//
//===----------------------------------------------------------------------===//
-#ifndef LLVM_TRANSFORMS_SWAPSTRUCTCONTENTS_H
-#define LLVM_TRANSFORMS_SWAPSTRUCTCONTENTS_H
+#ifndef LLVM_TRANSFORMS_SIMPLESTRUCTMUTATION_H
+#define LLVM_TRANSFORMS_SIMPLESTRUCTMUTATION_H
#include "llvm/Transforms/MutateStructTypes.h"
-// FIXME: Move to correct location!
-class PrebuiltStructMutation : public MutateStructTypes {
+class SimpleStructMutation : public MutateStructTypes {
public:
- enum Transform { SwapElements, SortElements };
+ enum Transform { SwapElements, SortElements } CurrentXForm;
- PrebuiltStructMutation(Module *M, enum Transform XForm)
- : MutateStructTypes(getTransforms(M, XForm)) {}
+ SimpleStructMutation(enum Transform XForm) : CurrentXForm(XForm) {}
+
+ virtual bool run(Module *M) {
+ setTransforms(getTransforms(M, CurrentXForm));
+ bool Changed = MutateStructTypes::run(M);
+ clearTransforms();
+ return Changed;
+ }
private:
static TransformsType getTransforms(Module *M, enum Transform);