[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