diff options
Diffstat (limited to 'include/llvm/Transforms/IPO/SimpleStructMutation.h')
-rw-r--r-- | include/llvm/Transforms/IPO/SimpleStructMutation.h | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/include/llvm/Transforms/IPO/SimpleStructMutation.h b/include/llvm/Transforms/IPO/SimpleStructMutation.h new file mode 100644 index 0000000000..62da4185da --- /dev/null +++ b/include/llvm/Transforms/IPO/SimpleStructMutation.h @@ -0,0 +1,35 @@ +//===- llvm/Transforms/SwapStructContents.h - Permute Structs ----*- C++ -*--=// +// +// This pass does a simple transformation that swaps all of the elements of the +// struct types in the program around. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_TRANSFORMS_SWAPSTRUCTCONTENTS_H +#define LLVM_TRANSFORMS_SWAPSTRUCTCONTENTS_H + +#include "llvm/Pass.h" + +class SwapStructContents : public Pass { + Pass *StructMutator; +public: + // doPassInitialization - Figure out what transformation to do + // + bool doPassInitialization(Module *M); + + // doPerMethodWork - Virtual method overriden by subclasses to do the + // per-method processing of the pass. + // + virtual bool doPerMethodWork(Method *M) { + return StructMutator->doPerMethodWork(M); + } + + // doPassFinalization - Forward to our worker. + // + virtual bool doPassFinalization(Module *M) { + return StructMutator->doPassFinalization(M); + } + +}; + +#endif |