[PM] Port WholeProgramDevirt to the new pass manager.
llvm-svn: 272721
This commit is contained in:
parent
18e3fd3ad6
commit
d737dd2ec6
|
@ -15,6 +15,8 @@
|
|||
#ifndef LLVM_TRANSFORMS_IPO_WHOLEPROGRAMDEVIRT_H
|
||||
#define LLVM_TRANSFORMS_IPO_WHOLEPROGRAMDEVIRT_H
|
||||
|
||||
#include "llvm/IR/Module.h"
|
||||
#include "llvm/IR/PassManager.h"
|
||||
#include <cassert>
|
||||
#include <cstdint>
|
||||
#include <utility>
|
||||
|
@ -210,6 +212,11 @@ void setAfterReturnValues(MutableArrayRef<VirtualCallTarget> Targets,
|
|||
int64_t &OffsetByte, uint64_t &OffsetBit);
|
||||
|
||||
} // end namespace wholeprogramdevirt
|
||||
|
||||
struct WholeProgramDevirtPass : public PassInfoMixin<WholeProgramDevirtPass> {
|
||||
PreservedAnalyses run(Module &M);
|
||||
};
|
||||
|
||||
} // end namespace llvm
|
||||
|
||||
#endif // LLVM_TRANSFORMS_IPO_WHOLEPROGRAMDEVIRT_H
|
||||
|
|
|
@ -63,6 +63,7 @@
|
|||
#include "llvm/Transforms/IPO/Internalize.h"
|
||||
#include "llvm/Transforms/IPO/SCCP.h"
|
||||
#include "llvm/Transforms/IPO/StripDeadPrototypes.h"
|
||||
#include "llvm/Transforms/IPO/WholeProgramDevirt.h"
|
||||
#include "llvm/Transforms/InstCombine/InstCombine.h"
|
||||
#include "llvm/Transforms/InstrProfiling.h"
|
||||
#include "llvm/Transforms/PGOInstrumentation.h"
|
||||
|
|
|
@ -60,6 +60,7 @@ MODULE_PASS("print-lcg", LazyCallGraphPrinterPass(dbgs()))
|
|||
MODULE_PASS("rpo-functionattrs", ReversePostOrderFunctionAttrsPass())
|
||||
MODULE_PASS("sample-profile", SampleProfileLoaderPass())
|
||||
MODULE_PASS("strip-dead-prototypes", StripDeadPrototypesPass())
|
||||
MODULE_PASS("wholeprogramdevirt", WholeProgramDevirtPass())
|
||||
MODULE_PASS("verify", VerifierPass())
|
||||
#undef MODULE_PASS
|
||||
|
||||
|
|
|
@ -280,6 +280,12 @@ ModulePass *llvm::createWholeProgramDevirtPass() {
|
|||
return new WholeProgramDevirt;
|
||||
}
|
||||
|
||||
PreservedAnalyses WholeProgramDevirtPass::run(Module &M) {
|
||||
if (!DevirtModule(M).run())
|
||||
return PreservedAnalyses::all();
|
||||
return PreservedAnalyses::none();
|
||||
}
|
||||
|
||||
void DevirtModule::buildBitSets(
|
||||
std::vector<VTableBits> &Bits,
|
||||
DenseMap<Metadata *, std::set<BitSetInfo>> &BitSets) {
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
; RUN: opt -S -wholeprogramdevirt %s | FileCheck %s
|
||||
; RUN: opt -S -passes=wholeprogramdevirt %s | FileCheck %s
|
||||
|
||||
target datalayout = "e-p:64:64"
|
||||
target triple = "x86_64-unknown-linux-gnu"
|
||||
|
|
Loading…
Reference in New Issue