[llvm] r272721 - [PM] Port WholeProgramDevirt to the new pass manager.
Davide Italiano via llvm-commits
llvm-commits at lists.llvm.org
Tue Jun 14 14:53:54 PDT 2016
The run() method here was already incapsulated inside another object,
so I avoided too much code churn and not renamed WholeProgramDevirt ->
WholeProgramDevirtLegacy. If you want me to do that, just let me know.
Thanks,
--
Davide
On Tue, Jun 14, 2016 at 2:44 PM, Davide Italiano via llvm-commits
<llvm-commits at lists.llvm.org> wrote:
> Author: davide
> Date: Tue Jun 14 16:44:19 2016
> New Revision: 272721
>
> URL: http://llvm.org/viewvc/llvm-project?rev=272721&view=rev
> Log:
> [PM] Port WholeProgramDevirt to the new pass manager.
>
> Modified:
> llvm/trunk/include/llvm/Transforms/IPO/WholeProgramDevirt.h
> llvm/trunk/lib/Passes/PassBuilder.cpp
> llvm/trunk/lib/Passes/PassRegistry.def
> llvm/trunk/lib/Transforms/IPO/WholeProgramDevirt.cpp
> llvm/trunk/test/Transforms/WholeProgramDevirt/constant-arg.ll
>
> Modified: llvm/trunk/include/llvm/Transforms/IPO/WholeProgramDevirt.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Transforms/IPO/WholeProgramDevirt.h?rev=272721&r1=272720&r2=272721&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Transforms/IPO/WholeProgramDevirt.h (original)
> +++ llvm/trunk/include/llvm/Transforms/IPO/WholeProgramDevirt.h Tue Jun 14 16:44:19 2016
> @@ -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(MutableArrayRe
> 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
>
> Modified: llvm/trunk/lib/Passes/PassBuilder.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Passes/PassBuilder.cpp?rev=272721&r1=272720&r2=272721&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Passes/PassBuilder.cpp (original)
> +++ llvm/trunk/lib/Passes/PassBuilder.cpp Tue Jun 14 16:44:19 2016
> @@ -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"
>
> Modified: llvm/trunk/lib/Passes/PassRegistry.def
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Passes/PassRegistry.def?rev=272721&r1=272720&r2=272721&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Passes/PassRegistry.def (original)
> +++ llvm/trunk/lib/Passes/PassRegistry.def Tue Jun 14 16:44:19 2016
> @@ -60,6 +60,7 @@ MODULE_PASS("print-lcg", LazyCallGraphPr
> 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
>
>
> Modified: llvm/trunk/lib/Transforms/IPO/WholeProgramDevirt.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/WholeProgramDevirt.cpp?rev=272721&r1=272720&r2=272721&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Transforms/IPO/WholeProgramDevirt.cpp (original)
> +++ llvm/trunk/lib/Transforms/IPO/WholeProgramDevirt.cpp Tue Jun 14 16:44:19 2016
> @@ -280,6 +280,12 @@ ModulePass *llvm::createWholeProgramDevi
> 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) {
>
> Modified: llvm/trunk/test/Transforms/WholeProgramDevirt/constant-arg.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/WholeProgramDevirt/constant-arg.ll?rev=272721&r1=272720&r2=272721&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/WholeProgramDevirt/constant-arg.ll (original)
> +++ llvm/trunk/test/Transforms/WholeProgramDevirt/constant-arg.ll Tue Jun 14 16:44:19 2016
> @@ -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"
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
--
Davide
"There are no solved problems; there are only problems that are more
or less solved" -- Henri Poincare
More information about the llvm-commits
mailing list