mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-28 06:24:57 +00:00
Change over to use new style pass mechanism, now passes only expose small
creation functions in their public header file, unless they can help it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1816 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -19,6 +19,37 @@ using std::pair;
|
||||
|
||||
#include "llvm/Assembly/Writer.h"
|
||||
|
||||
namespace {
|
||||
class SimpleStructMutation : public MutateStructTypes {
|
||||
public:
|
||||
enum Transform { SwapElements, SortElements } CurrentXForm;
|
||||
|
||||
SimpleStructMutation(enum Transform XForm) : CurrentXForm(XForm) {}
|
||||
|
||||
virtual bool run(Module *M) {
|
||||
setTransforms(getTransforms(M, CurrentXForm));
|
||||
bool Changed = MutateStructTypes::run(M);
|
||||
clearTransforms();
|
||||
return Changed;
|
||||
}
|
||||
|
||||
// getAnalysisUsageInfo - This function needs the results of the
|
||||
// FindUsedTypes and FindUnsafePointerTypes analysis passes...
|
||||
//
|
||||
virtual void getAnalysisUsageInfo(Pass::AnalysisSet &Required,
|
||||
Pass::AnalysisSet &Destroyed,
|
||||
Pass::AnalysisSet &Provided) {
|
||||
Required.push_back(FindUsedTypes::ID);
|
||||
Required.push_back(FindUnsafePointerTypes::ID);
|
||||
MutateStructTypes::getAnalysisUsageInfo(Required, Destroyed, Provided);
|
||||
}
|
||||
|
||||
private:
|
||||
TransformsType getTransforms(Module *M, enum Transform);
|
||||
};
|
||||
} // end anonymous namespace
|
||||
|
||||
|
||||
|
||||
// PruneTypes - Given a type Ty, make sure that neither it, or one of its
|
||||
// subtypes, occur in TypesToModify.
|
||||
@ -87,6 +118,7 @@ static inline void GetTransformation(const StructType *ST,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
SimpleStructMutation::TransformsType
|
||||
SimpleStructMutation::getTransforms(Module *M, enum Transform XForm) {
|
||||
// We need to know which types to modify, and which types we CAN'T modify
|
||||
@ -137,13 +169,10 @@ SimpleStructMutation::TransformsType
|
||||
}
|
||||
|
||||
|
||||
// getAnalysisUsageInfo - This function needs the results of the
|
||||
// FindUsedTypes and FindUnsafePointerTypes analysis passes...
|
||||
//
|
||||
void SimpleStructMutation::getAnalysisUsageInfo(Pass::AnalysisSet &Required,
|
||||
Pass::AnalysisSet &Destroyed,
|
||||
Pass::AnalysisSet &Provided){
|
||||
Required.push_back(FindUsedTypes::ID);
|
||||
Required.push_back(FindUnsafePointerTypes::ID);
|
||||
MutateStructTypes::getAnalysisUsageInfo(Required, Destroyed, Provided);
|
||||
Pass *createSwapElementsPass() {
|
||||
return new SimpleStructMutation(SimpleStructMutation::SwapElements);
|
||||
}
|
||||
Pass *createSortElementsPass() {
|
||||
return new SimpleStructMutation(SimpleStructMutation::SortElements);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user