[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