[llvm] r336653 - [VPlan] Add VPlanTestBase.h with helper class to build VPlan for tests.
Evgenii Stepanov via llvm-commits
llvm-commits at lists.llvm.org
Tue Jul 10 11:33:26 PDT 2018
Hi,
this has created new memory leaks:
http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-bootstrap/builds/6289/steps/check-llvm%20asan/logs/stdio
On Tue, Jul 10, 2018 at 3:45 AM, Florian Hahn via llvm-commits <
llvm-commits at lists.llvm.org> wrote:
> Author: fhahn
> Date: Tue Jul 10 03:45:46 2018
> New Revision: 336653
>
> URL: http://llvm.org/viewvc/llvm-project?rev=336653&view=rev
> Log:
> [VPlan] Add VPlanTestBase.h with helper class to build VPlan for tests.
>
> Reviewers: dcaballe, hsaito, rengolin
>
> Reviewed By: dcaballe
>
> Differential Revision: https://reviews.llvm.org/D49032
>
> Added:
> llvm/trunk/unittests/Transforms/Vectorize/VPlanTestBase.h
> Modified:
> llvm/trunk/unittests/Transforms/Vectorize/VPlanHCFGTest.cpp
>
> Modified: llvm/trunk/unittests/Transforms/Vectorize/VPlanHCFGTest.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/
> Transforms/Vectorize/VPlanHCFGTest.cpp?rev=336653&
> r1=336652&r2=336653&view=diff
> ============================================================
> ==================
> --- llvm/trunk/unittests/Transforms/Vectorize/VPlanHCFGTest.cpp (original)
> +++ llvm/trunk/unittests/Transforms/Vectorize/VPlanHCFGTest.cpp Tue Jul
> 10 03:45:46 2018
> @@ -8,35 +8,16 @@
> //===-------------------------------------------------------
> ---------------===//
>
> #include "../lib/Transforms/Vectorize/VPlan.h"
> -#include "../lib/Transforms/Vectorize/VPlanHCFGBuilder.h"
> #include "../lib/Transforms/Vectorize/VPlanHCFGTransforms.h"
> -#include "llvm/AsmParser/Parser.h"
> -#include "llvm/IR/Dominators.h"
> +#include "VPlanTestBase.h"
> #include "gtest/gtest.h"
>
> namespace llvm {
> namespace {
>
> -class VPlanHCFGTest : public testing::Test {
> -protected:
> - std::unique_ptr<DominatorTree> DT;
> - std::unique_ptr<LoopInfo> LI;
> -
> - VPlanHCFGTest() {}
> -
> - VPlanPtr doBuildPlan(BasicBlock *LoopHeader) {
> - DT.reset(new DominatorTree(*LoopHeader->getParent()));
> - LI.reset(new LoopInfo(*DT));
> -
> - auto Plan = llvm::make_unique<VPlan>();
> - VPlanHCFGBuilder HCFGBuilder(LI->getLoopFor(LoopHeader), LI.get());
> - HCFGBuilder.buildHierarchicalCFG(*Plan.get());
> - return Plan;
> - }
> -};
> +class VPlanHCFGTest : public VPlanTestBase {};
>
> TEST_F(VPlanHCFGTest, testBuildHCFGInnerLoop) {
> - LLVMContext Ctx;
> const char *ModuleString =
> "define void @f(i32* %A, i64 %N) {\n"
> "entry:\n"
> @@ -54,12 +35,11 @@ TEST_F(VPlanHCFGTest, testBuildHCFGInner
> " ret void\n"
> "}\n";
>
> - SMDiagnostic Err;
> - std::unique_ptr<Module> M = parseAssemblyString(ModuleString, Err,
> Ctx);
> + Module &M = parseModule(ModuleString);
>
> - Function *F = M->getFunction("f");
> + Function *F = M.getFunction("f");
> BasicBlock *LoopHeader = F->getEntryBlock().getSingleSuccessor();
> - auto Plan = doBuildPlan(LoopHeader);
> + auto Plan = buildHCFG(LoopHeader);
>
> VPBasicBlock *Entry = Plan->getEntry()->getEntryBasicBlock();
> EXPECT_NE(nullptr, Entry->getSingleSuccessor());
> @@ -115,7 +95,6 @@ TEST_F(VPlanHCFGTest, testBuildHCFGInner
> }
>
> TEST_F(VPlanHCFGTest, testVPInstructionToVPRecipesInner) {
> - LLVMContext Ctx;
> const char *ModuleString =
> "define void @f(i32* %A, i64 %N) {\n"
> "entry:\n"
> @@ -133,12 +112,11 @@ TEST_F(VPlanHCFGTest, testVPInstructionT
> " ret void\n"
> "}\n";
>
> - SMDiagnostic Err;
> - std::unique_ptr<Module> M = parseAssemblyString(ModuleString, Err,
> Ctx);
> + Module &M = parseModule(ModuleString);
>
> - Function *F = M->getFunction("f");
> + Function *F = M.getFunction("f");
> BasicBlock *LoopHeader = F->getEntryBlock().getSingleSuccessor();
> - auto Plan = doBuildPlan(LoopHeader);
> + auto Plan = buildHCFG(LoopHeader);
>
> LoopVectorizationLegality::InductionList Inductions;
> SmallPtrSet<Instruction *, 1> DeadInstructions;
>
> Added: llvm/trunk/unittests/Transforms/Vectorize/VPlanTestBase.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/
> Transforms/Vectorize/VPlanTestBase.h?rev=336653&view=auto
> ============================================================
> ==================
> --- llvm/trunk/unittests/Transforms/Vectorize/VPlanTestBase.h (added)
> +++ llvm/trunk/unittests/Transforms/Vectorize/VPlanTestBase.h Tue Jul 10
> 03:45:46 2018
> @@ -0,0 +1,68 @@
> +//===- llvm/unittest/Transforms/Vectorize/VPlanTestBase.h
> -----------------===//
> +//
> +// The LLVM Compiler Infrastructure
> +//
> +// This file is distributed under the University of Illinois Open Source
> +// License. See LICENSE.TXT for details.
> +//
> +//===------------------------------------------------------
> ----------------===//
> +/// \file
> +/// This file defines a VPlanTestBase class, which provides helpers to
> parse
> +/// a LLVM IR string and create VPlans given a loop entry block.
> +//===------------------------------------------------------
> ----------------===//
> +#ifndef LLVM_UNITTESTS_TRANSFORMS_VECTORIZE_VPLANTESTBASE_H
> +#define LLVM_UNITTESTS_TRANSFORMS_VECTORIZE_VPLANTESTBASE_H
> +
> +#include "../lib/Transforms/Vectorize/VPlan.h"
> +#include "../lib/Transforms/Vectorize/VPlanHCFGBuilder.h"
> +#include "llvm/Analysis/LoopInfo.h"
> +#include "llvm/AsmParser/Parser.h"
> +#include "llvm/IR/Dominators.h"
> +#include "llvm/Support/SourceMgr.h"
> +#include "gtest/gtest.h"
> +
> +namespace llvm {
> +
> +/// Helper class to create a module from an assembly string and VPlans
> for a
> +/// given loop entry block.
> +class VPlanTestBase : public testing::Test {
> +protected:
> + std::unique_ptr<DominatorTree> DT;
> + std::unique_ptr<LoopInfo> LI;
> + std::unique_ptr<Module> M;
> + std::unique_ptr<LLVMContext> Ctx;
> +
> + VPlanTestBase() : Ctx(new LLVMContext) {}
> + ~VPlanTestBase() {
> + LI.release();
> + DT.release();
> + M.release();
> + // We need to release objects depending on Ctx first.
> + Ctx.release();
> + }
> +
> + Module &parseModule(const char *ModuleString) {
> + SMDiagnostic Err;
> + M = parseAssemblyString(ModuleString, Err, *Ctx);
> + EXPECT_TRUE(M);
> + return *M;
> + }
> +
> + void doAnalysis(Function &F) {
> + DT.reset(new DominatorTree(F));
> + LI.reset(new LoopInfo(*DT));
> + }
> +
> + VPlanPtr buildHCFG(BasicBlock *LoopHeader) {
> + doAnalysis(*LoopHeader->getParent());
> +
> + auto Plan = llvm::make_unique<VPlan>();
> + VPlanHCFGBuilder HCFGBuilder(LI->getLoopFor(LoopHeader), LI.get());
> + HCFGBuilder.buildHierarchicalCFG(*Plan.get());
> + return Plan;
> + }
> +};
> +
> +} // namespace llvm
> +
> +#endif // LLVM_UNITTESTS_TRANSFORMS_VECTORIZE_VPLANTESTBASE_H
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180710/7187a925/attachment.html>
More information about the llvm-commits
mailing list