diff options
author | Chris Lattner <sabre@nondot.org> | 2002-01-21 07:31:50 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2002-01-21 07:31:50 +0000 |
commit | f4de63f65fa995e68e3cd268117ab065068be413 (patch) | |
tree | 2fd8cd44af0f23dafd94102c1c0152b1cd82fe4d /include/llvm/Transforms/IPO/SimpleStructMutation.h | |
parent | aff5bcebb7fb9880e0a3518a8e7c999e738d531c (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.h | 25 |
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); |