[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 13:01:29 PDT 2018


Reverted.

On Tue, Jul 10, 2018 at 11:33 AM, Evgenii Stepanov <
eugeni.stepanov at gmail.com> wrote:

> 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/Tra
>> nsforms/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/Tra
>> nsforms/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/23e27126/attachment.html>


More information about the llvm-commits mailing list