mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 18:54:02 +01:00
[PM/IPO] Port LowerTypeTests to the new PassManager.
There's a little bit of churn in this patch because the initialization mechanism is now shared between the old and the new PM. Other than that, it's just a pretty mechanical translation. llvm-svn: 275082
This commit is contained in:
parent
6194a54b7e
commit
fd6ab00139
@ -17,6 +17,8 @@
|
||||
|
||||
#include "llvm/ADT/DenseMap.h"
|
||||
#include "llvm/ADT/SmallVector.h"
|
||||
#include "llvm/IR/Module.h"
|
||||
#include "llvm/IR/PassManager.h"
|
||||
|
||||
#include <cstdint>
|
||||
#include <cstring>
|
||||
@ -200,6 +202,12 @@ struct ByteArrayBuilder {
|
||||
};
|
||||
|
||||
} // end namespace lowertypetests
|
||||
|
||||
class LowerTypeTestsPass : public PassInfoMixin<LowerTypeTestsPass> {
|
||||
public:
|
||||
PreservedAnalyses run(Module &M, AnalysisManager<Module> &AM);
|
||||
};
|
||||
|
||||
} // end namespace llvm
|
||||
|
||||
#endif // LLVM_TRANSFORMS_IPO_LOWERTYPETESTS_H
|
||||
|
@ -66,6 +66,7 @@
|
||||
#include "llvm/Transforms/IPO/GlobalOpt.h"
|
||||
#include "llvm/Transforms/IPO/InferFunctionAttrs.h"
|
||||
#include "llvm/Transforms/IPO/Internalize.h"
|
||||
#include "llvm/Transforms/IPO/LowerTypeTests.h"
|
||||
#include "llvm/Transforms/IPO/PartialInlining.h"
|
||||
#include "llvm/Transforms/IPO/SCCP.h"
|
||||
#include "llvm/Transforms/IPO/StripDeadPrototypes.h"
|
||||
|
@ -50,6 +50,7 @@ MODULE_PASS("instrprof", InstrProfiling())
|
||||
MODULE_PASS("internalize", InternalizePass())
|
||||
MODULE_PASS("invalidate<all>", InvalidateAllAnalysesPass())
|
||||
MODULE_PASS("ipsccp", IPSCCPPass())
|
||||
MODULE_PASS("lowertypetests", LowerTypeTestsPass())
|
||||
MODULE_PASS("no-op-module", NoOpModulePass())
|
||||
MODULE_PASS("partial-inliner", PartialInlinerPass())
|
||||
MODULE_PASS("pgo-icall-prom", PGOIndirectCallPromotion())
|
||||
|
@ -985,25 +985,36 @@ bool LowerTypeTests::lower() {
|
||||
return true;
|
||||
}
|
||||
|
||||
// Initialization helper shared by the old and the new PM.
|
||||
static void init(LowerTypeTests *LTT, Module &M) {
|
||||
LTT->M = &M;
|
||||
const DataLayout &DL = M.getDataLayout();
|
||||
Triple TargetTriple(M.getTargetTriple());
|
||||
LTT->LinkerSubsectionsViaSymbols = TargetTriple.isMacOSX();
|
||||
LTT->Arch = TargetTriple.getArch();
|
||||
LTT->ObjectFormat = TargetTriple.getObjectFormat();
|
||||
LTT->Int1Ty = Type::getInt1Ty(M.getContext());
|
||||
LTT->Int8Ty = Type::getInt8Ty(M.getContext());
|
||||
LTT->Int32Ty = Type::getInt32Ty(M.getContext());
|
||||
LTT->Int32PtrTy = PointerType::getUnqual(LTT->Int32Ty);
|
||||
LTT->Int64Ty = Type::getInt64Ty(M.getContext());
|
||||
LTT->IntPtrTy = DL.getIntPtrType(M.getContext(), 0);
|
||||
LTT->TypeTestCallSites.clear();
|
||||
}
|
||||
|
||||
bool LowerTypeTests::runOnModule(Module &M) {
|
||||
if (skipModule(M))
|
||||
return false;
|
||||
|
||||
this->M = &M;
|
||||
const DataLayout &DL = M.getDataLayout();
|
||||
|
||||
Triple TargetTriple(M.getTargetTriple());
|
||||
LinkerSubsectionsViaSymbols = TargetTriple.isMacOSX();
|
||||
Arch = TargetTriple.getArch();
|
||||
ObjectFormat = TargetTriple.getObjectFormat();
|
||||
|
||||
Int1Ty = Type::getInt1Ty(M.getContext());
|
||||
Int8Ty = Type::getInt8Ty(M.getContext());
|
||||
Int32Ty = Type::getInt32Ty(M.getContext());
|
||||
Int32PtrTy = PointerType::getUnqual(Int32Ty);
|
||||
Int64Ty = Type::getInt64Ty(M.getContext());
|
||||
IntPtrTy = DL.getIntPtrType(M.getContext(), 0);
|
||||
|
||||
TypeTestCallSites.clear();
|
||||
init(this, M);
|
||||
return lower();
|
||||
}
|
||||
|
||||
PreservedAnalyses LowerTypeTestsPass::run(Module &M,
|
||||
AnalysisManager<Module> &AM) {
|
||||
LowerTypeTests Impl;
|
||||
init(&Impl, M);
|
||||
bool Changed = Impl.lower();
|
||||
if (!Changed)
|
||||
return PreservedAnalyses::all();
|
||||
return PreservedAnalyses::none();
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
; RUN: opt -S -lowertypetests < %s | FileCheck %s
|
||||
; RUN: opt -S -passes=lowertypetests < %s | FileCheck %s
|
||||
|
||||
target datalayout = "e-p:32:32"
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user