[polly] [Polly] Remove PolyhedralInfo (PR #124437)
Michael Kruse via llvm-commits
llvm-commits at lists.llvm.org
Sat Jan 25 16:35:38 PST 2025
https://github.com/Meinersbur created https://github.com/llvm/llvm-project/pull/124437
PolyhedralInfo is tied to the legacy pass manager. With the eventual removal of the legacy pass manager it will not be useful anymore.
PolyhedralInfo was an experiment to make Polly's analysis available to other passes. Its power is limited due to not being able to make assumptions for which regular Polly would emit a runtime condition/code versioning during optimization.
When eventually porting such an API to the new pass manager, we will have to invent a new API.
>From 3bcaf3f2809410d7f1c87cf9d72753ba94ba63ac Mon Sep 17 00:00:00 2001
From: Michael Kruse <llvm-project at meinersbur.de>
Date: Fri, 24 Jan 2025 17:58:50 +0100
Subject: [PATCH] Remove PolyhedralInfo
---
polly/include/polly/LinkAllPasses.h | 6 -
polly/include/polly/PolyhedralInfo.h | 104 ---------
polly/lib/Analysis/PolyhedralInfo.cpp | 215 ------------------
polly/lib/CMakeLists.txt | 1 -
polly/lib/Support/RegisterPasses.cpp | 3 -
.../OpenMP/multiple_loops_outer_parallel.ll | 3 -
.../OpenMP/nested_loop_both_parallel.ll | 4 -
.../nested_loop_both_parallel_parametric.ll | 4 -
.../OpenMP/nested_loop_inner_parallel.ll | 4 -
.../OpenMP/nested_loop_outer_parallel.ll | 4 -
.../OpenMP/single_loop_param_non_parallel.ll | 2 -
.../OpenMP/single_loop_param_parallel.ll | 2 -
.../single_loop_param_parallel_computeout.ll | 2 -
.../dependence_distance_constant.ll | 3 -
.../dependence_distance_multiple_constant.ll | 2 -
.../dependence_distance_parametric.ll | 3 -
.../dependence_distance_parametric_expr.ll | 3 -
.../IstAstInfo/dependence_distance_varying.ll | 2 -
...pendence_distance_varying_in_outer_loop.ll | 3 -
.../dependence_distance_varying_multiple.ll | 2 -
...duction_clauses_multidimensional_access.ll | 4 -
.../IstAstInfo/reduction_in_one_dimension.ll | 3 -
.../IstAstInfo/reduction_loop_reversal.ll | 4 -
.../IstAstInfo/reduction_modulo_schedule.ll | 4 -
24 files changed, 387 deletions(-)
delete mode 100644 polly/include/polly/PolyhedralInfo.h
delete mode 100644 polly/lib/Analysis/PolyhedralInfo.cpp
diff --git a/polly/include/polly/LinkAllPasses.h b/polly/include/polly/LinkAllPasses.h
index a2f8f332999186..54e7c5a43ab93f 100644
--- a/polly/include/polly/LinkAllPasses.h
+++ b/polly/include/polly/LinkAllPasses.h
@@ -42,8 +42,6 @@ llvm::Pass *createJSONExporterPass();
llvm::Pass *createJSONImporterPass();
llvm::Pass *createJSONImporterPrinterLegacyPass(llvm::raw_ostream &OS);
llvm::Pass *createPollyCanonicalizePass();
-llvm::Pass *createPolyhedralInfoPass();
-llvm::Pass *createPolyhedralInfoPrinterLegacyPass(llvm::raw_ostream &OS);
llvm::Pass *createScopDetectionWrapperPassPass();
llvm::Pass *createScopDetectionPrinterLegacyPass(llvm::raw_ostream &OS);
llvm::Pass *createScopInfoRegionPassPass();
@@ -99,8 +97,6 @@ struct PollyForcePassLinking {
polly::createScopInfoWrapperPassPass();
polly::createScopInfoPrinterLegacyFunctionPass(llvm::outs());
polly::createPollyCanonicalizePass();
- polly::createPolyhedralInfoPass();
- polly::createPolyhedralInfoPrinterLegacyPass(llvm::outs());
polly::createIslAstInfoWrapperPassPass();
polly::createIslAstInfoPrinterLegacyPass(llvm::outs());
polly::createCodeGenerationPass();
@@ -156,8 +152,6 @@ void initializeDeLICMPrinterLegacyPassPass(llvm::PassRegistry &);
void initializeSimplifyWrapperPassPass(llvm::PassRegistry &);
void initializeSimplifyPrinterLegacyPassPass(llvm::PassRegistry &);
void initializePruneUnprofitableWrapperPassPass(llvm::PassRegistry &);
-void initializePolyhedralInfoPass(llvm::PassRegistry &);
-void initializePolyhedralInfoPrinterLegacyPassPass(llvm::PassRegistry &);
} // namespace llvm
#endif
diff --git a/polly/include/polly/PolyhedralInfo.h b/polly/include/polly/PolyhedralInfo.h
deleted file mode 100644
index b7534cd6b8df74..00000000000000
--- a/polly/include/polly/PolyhedralInfo.h
+++ /dev/null
@@ -1,104 +0,0 @@
-//===- polly/PolyhedralInfo.h - PolyhedralInfo class definition -*- C++ -*-===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-///
-/// This file contains the declaration of the PolyhedralInfo class, which will
-/// provide an interface to expose polyhedral analysis information of Polly.
-///
-/// This is work in progress. We will add more API's as and when deemed
-/// required.
-//===----------------------------------------------------------------------===///
-
-#ifndef POLLY_POLYHEDRAL_INFO_H
-#define POLLY_POLYHEDRAL_INFO_H
-
-#include "llvm/Pass.h"
-#include "isl/aff_type.h"
-#include "isl/ctx.h"
-#include "isl/union_map_type.h"
-
-namespace llvm {
-class Loop;
-} // namespace llvm
-
-namespace polly {
-
-class Scop;
-class ScopInfo;
-class DependenceInfoWrapperPass;
-
-class PolyhedralInfo final : public llvm::FunctionPass {
-public:
- static char ID; // Pass identification, replacement for typeid
-
- /// Construct a new PolyhedralInfo pass.
- PolyhedralInfo() : FunctionPass(ID) {}
- ~PolyhedralInfo() {}
-
- /// Check if a given loop is parallel.
- ///
- /// @param L The loop.
- ///
- /// @return Returns true, if loop is parallel false otherwise.
- bool isParallel(llvm::Loop *L) const;
-
- /// Return the SCoP containing the @p L loop.
- ///
- /// @param L The loop.
- ///
- /// @return Returns the SCoP containing the given loop.
- /// Returns null if the loop is not contained in any SCoP.
- const Scop *getScopContainingLoop(llvm::Loop *L) const;
-
- /// Computes the partial schedule for the given @p L loop.
- ///
- /// @param S The SCoP containing the given loop
- /// @param L The loop.
- ///
- /// @return Returns the partial schedule for the given loop
- __isl_give isl_union_map *getScheduleForLoop(const Scop *S,
- llvm::Loop *L) const;
-
- /// Get the SCoP and dependence analysis information for @p F.
- bool runOnFunction(llvm::Function &F) override;
-
- /// Release the internal memory.
- void releaseMemory() override {}
-
- /// Print to @p OS if each dimension of a loop nest is parallel or not.
- void print(llvm::raw_ostream &OS,
- const llvm::Module *M = nullptr) const override;
-
- /// Register all analyses and transformation required.
- void getAnalysisUsage(llvm::AnalysisUsage &AU) const override;
-
-private:
- /// Check if a given loop is parallel or vectorizable.
- ///
- /// @param L The loop.
- /// @param MinDepDistPtr If not nullptr, the minimal dependence distance will
- /// be returned at the address of that pointer
- ///
- /// @return Returns true if loop is parallel or vectorizable, false
- /// otherwise.
- bool checkParallel(llvm::Loop *L,
- __isl_give isl_pw_aff **MinDepDistPtr = nullptr) const;
-
- ScopInfo *SI;
- DependenceInfoWrapperPass *DI;
-};
-
-llvm::Pass *createPolyhedralInfoPrinterLegacyPass(llvm::raw_ostream &OS);
-} // end namespace polly
-
-namespace llvm {
-class PassRegistry;
-void initializePolyhedralInfoPass(llvm::PassRegistry &);
-void initializePolyhedralInfoPrinterLegacyPassPass(llvm::PassRegistry &);
-} // namespace llvm
-
-#endif
diff --git a/polly/lib/Analysis/PolyhedralInfo.cpp b/polly/lib/Analysis/PolyhedralInfo.cpp
deleted file mode 100644
index 8d8e81a9049dfe..00000000000000
--- a/polly/lib/Analysis/PolyhedralInfo.cpp
+++ /dev/null
@@ -1,215 +0,0 @@
-//===--------- PolyhedralInfo.cpp - Create Scops from LLVM IR-------------===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-//
-// An interface to the Polyhedral analysis engine(Polly) of LLVM.
-//
-// This pass provides an interface to the polyhedral analysis performed by
-// Polly.
-//
-// This interface provides basic interface like isParallel, isVectorizable
-// that can be used in LLVM transformation passes.
-//
-// Work in progress, this file is subject to change.
-//
-//===----------------------------------------------------------------------===//
-
-#include "polly/PolyhedralInfo.h"
-#include "polly/DependenceInfo.h"
-#include "polly/LinkAllPasses.h"
-#include "polly/Options.h"
-#include "polly/ScopInfo.h"
-#include "polly/Support/GICHelper.h"
-#include "llvm/Analysis/LoopInfo.h"
-#include "llvm/InitializePasses.h"
-#include "llvm/Support/Debug.h"
-#include "isl/union_map.h"
-
-using namespace llvm;
-using namespace polly;
-
-#include "polly/Support/PollyDebug.h"
-#define DEBUG_TYPE "polyhedral-info"
-
-static cl::opt<bool> CheckParallel("polly-check-parallel",
- cl::desc("Check for parallel loops"),
- cl::Hidden, cl::cat(PollyCategory));
-
-static cl::opt<bool> CheckVectorizable("polly-check-vectorizable",
- cl::desc("Check for vectorizable loops"),
- cl::Hidden, cl::cat(PollyCategory));
-
-void PolyhedralInfo::getAnalysisUsage(AnalysisUsage &AU) const {
- AU.addRequiredTransitive<DependenceInfoWrapperPass>();
- AU.addRequired<LoopInfoWrapperPass>();
- AU.addRequiredTransitive<ScopInfoWrapperPass>();
- AU.setPreservesAll();
-}
-
-bool PolyhedralInfo::runOnFunction(Function &F) {
- DI = &getAnalysis<DependenceInfoWrapperPass>();
- SI = getAnalysis<ScopInfoWrapperPass>().getSI();
- return false;
-}
-
-void PolyhedralInfo::print(raw_ostream &OS, const Module *) const {
- auto &LI = getAnalysis<LoopInfoWrapperPass>().getLoopInfo();
- for (auto *TopLevelLoop : LI) {
- for (auto *L : depth_first(TopLevelLoop)) {
- OS.indent(2) << L->getHeader()->getName() << ":\t";
- if (CheckParallel && isParallel(L))
- OS << "Loop is parallel.\n";
- else if (CheckParallel)
- OS << "Loop is not parallel.\n";
- }
- }
-}
-
-bool PolyhedralInfo::checkParallel(Loop *L, isl_pw_aff **MinDepDistPtr) const {
- bool IsParallel;
- const Scop *S = getScopContainingLoop(L);
- if (!S)
- return false;
- const Dependences &D =
- DI->getDependences(const_cast<Scop *>(S), Dependences::AL_Access);
- if (!D.hasValidDependences())
- return false;
- POLLY_DEBUG(dbgs() << "Loop :\t" << L->getHeader()->getName() << ":\n");
-
- isl_union_map *Deps =
- D.getDependences(Dependences::TYPE_RAW | Dependences::TYPE_WAW |
- Dependences::TYPE_WAR | Dependences::TYPE_RED)
- .release();
-
- POLLY_DEBUG(dbgs() << "Dependences :\t" << stringFromIslObj(Deps, "null")
- << "\n");
-
- isl_union_map *Schedule = getScheduleForLoop(S, L);
- POLLY_DEBUG(dbgs() << "Schedule: \t" << stringFromIslObj(Schedule, "null")
- << "\n");
-
- IsParallel = D.isParallel(Schedule, Deps, MinDepDistPtr);
- isl_union_map_free(Schedule);
- return IsParallel;
-}
-
-bool PolyhedralInfo::isParallel(Loop *L) const { return checkParallel(L); }
-
-const Scop *PolyhedralInfo::getScopContainingLoop(Loop *L) const {
- assert((SI) && "ScopInfoWrapperPass is required by PolyhedralInfo pass!\n");
- for (auto &It : *SI) {
- Region *R = It.first;
- if (R->contains(L))
- return It.second.get();
- }
- return nullptr;
-}
-
-// Given a Loop and the containing SCoP, we compute the partial schedule
-// by taking union of individual schedules of each ScopStmt within the loop
-// and projecting out the inner dimensions from the range of the schedule.
-// for (i = 0; i < n; i++)
-// for (j = 0; j < n; j++)
-// A[j] = 1; //Stmt
-//
-// The original schedule will be
-// Stmt[i0, i1] -> [i0, i1]
-// The schedule for the outer loop will be
-// Stmt[i0, i1] -> [i0]
-// The schedule for the inner loop will be
-// Stmt[i0, i1] -> [i0, i1]
-__isl_give isl_union_map *PolyhedralInfo::getScheduleForLoop(const Scop *S,
- Loop *L) const {
- isl_union_map *Schedule = isl_union_map_empty(S->getParamSpace().release());
- int CurrDim = S->getRelativeLoopDepth(L);
- POLLY_DEBUG(dbgs() << "Relative loop depth:\t" << CurrDim << "\n");
- assert(CurrDim >= 0 && "Loop in region should have at least depth one");
-
- for (auto &SS : *S) {
- if (L->contains(SS.getSurroundingLoop())) {
-
- unsigned int MaxDim = SS.getNumIterators();
- POLLY_DEBUG(dbgs() << "Maximum depth of Stmt:\t" << MaxDim << "\n");
- isl_map *ScheduleMap = SS.getSchedule().release();
- assert(
- ScheduleMap &&
- "Schedules that contain extension nodes require special handling.");
-
- ScheduleMap = isl_map_project_out(ScheduleMap, isl_dim_out, CurrDim + 1,
- MaxDim - CurrDim - 1);
- ScheduleMap = isl_map_set_tuple_id(ScheduleMap, isl_dim_in,
- SS.getDomainId().release());
- Schedule =
- isl_union_map_union(Schedule, isl_union_map_from_map(ScheduleMap));
- }
- }
- Schedule = isl_union_map_coalesce(Schedule);
- return Schedule;
-}
-
-char PolyhedralInfo::ID = 0;
-
-Pass *polly::createPolyhedralInfoPass() { return new PolyhedralInfo(); }
-
-INITIALIZE_PASS_BEGIN(PolyhedralInfo, "polyhedral-info",
- "Polly - Interface to polyhedral analysis engine", false,
- false);
-INITIALIZE_PASS_DEPENDENCY(DependenceInfoWrapperPass);
-INITIALIZE_PASS_DEPENDENCY(LoopInfoWrapperPass);
-INITIALIZE_PASS_DEPENDENCY(ScopInfoWrapperPass);
-INITIALIZE_PASS_END(PolyhedralInfo, "polyhedral-info",
- "Polly - Interface to polyhedral analysis engine", false,
- false)
-
-//===----------------------------------------------------------------------===//
-
-namespace {
-/// Print result from PolyhedralInfo.
-class PolyhedralInfoPrinterLegacyPass final : public FunctionPass {
-public:
- static char ID;
-
- PolyhedralInfoPrinterLegacyPass() : PolyhedralInfoPrinterLegacyPass(outs()) {}
- explicit PolyhedralInfoPrinterLegacyPass(llvm::raw_ostream &OS)
- : FunctionPass(ID), OS(OS) {}
-
- bool runOnFunction(Function &F) override {
- PolyhedralInfo &P = getAnalysis<PolyhedralInfo>();
-
- OS << "Printing analysis '" << P.getPassName() << "' for function '"
- << F.getName() << "':\n";
- P.print(OS);
-
- return false;
- }
-
- void getAnalysisUsage(AnalysisUsage &AU) const override {
- FunctionPass::getAnalysisUsage(AU);
- AU.addRequired<PolyhedralInfo>();
- AU.setPreservesAll();
- }
-
-private:
- llvm::raw_ostream &OS;
-};
-
-char PolyhedralInfoPrinterLegacyPass::ID = 0;
-} // namespace
-
-Pass *polly::createPolyhedralInfoPrinterLegacyPass(raw_ostream &OS) {
- return new PolyhedralInfoPrinterLegacyPass(OS);
-}
-
-INITIALIZE_PASS_BEGIN(
- PolyhedralInfoPrinterLegacyPass, "print-polyhedral-info",
- "Polly - Print interface to polyhedral analysis engine analysis", false,
- false);
-INITIALIZE_PASS_DEPENDENCY(PolyhedralInfo);
-INITIALIZE_PASS_END(
- PolyhedralInfoPrinterLegacyPass, "print-polyhedral-info",
- "Polly - Print interface to polyhedral analysis engine analysis", false,
- false)
diff --git a/polly/lib/CMakeLists.txt b/polly/lib/CMakeLists.txt
index d91f4ecd37e6ce..0ed673815ff34f 100644
--- a/polly/lib/CMakeLists.txt
+++ b/polly/lib/CMakeLists.txt
@@ -43,7 +43,6 @@ add_llvm_pass_plugin(Polly
NO_MODULE
SUBPROJECT Polly
Analysis/DependenceInfo.cpp
- Analysis/PolyhedralInfo.cpp
Analysis/ScopDetection.cpp
Analysis/ScopDetectionDiagnostic.cpp
Analysis/ScopInfo.cpp
diff --git a/polly/lib/Support/RegisterPasses.cpp b/polly/lib/Support/RegisterPasses.cpp
index 503c3ae1e07c73..a46e61aafbeb75 100644
--- a/polly/lib/Support/RegisterPasses.cpp
+++ b/polly/lib/Support/RegisterPasses.cpp
@@ -30,7 +30,6 @@
#include "polly/JSONExporter.h"
#include "polly/LinkAllPasses.h"
#include "polly/MaximalStaticExpansion.h"
-#include "polly/PolyhedralInfo.h"
#include "polly/PruneUnprofitable.h"
#include "polly/ScheduleOptimizer.h"
#include "polly/ScopDetection.h"
@@ -232,8 +231,6 @@ void initializePollyPasses(llvm::PassRegistry &Registry) {
initializeIslScheduleOptimizerWrapperPassPass(Registry);
initializeIslScheduleOptimizerPrinterLegacyPassPass(Registry);
initializePollyCanonicalizePass(Registry);
- initializePolyhedralInfoPass(Registry);
- initializePolyhedralInfoPrinterLegacyPassPass(Registry);
initializeScopDetectionWrapperPassPass(Registry);
initializeScopDetectionPrinterLegacyPassPass(Registry);
initializeScopInlinerPass(Registry);
diff --git a/polly/test/IstAstInfo/OpenMP/multiple_loops_outer_parallel.ll b/polly/test/IstAstInfo/OpenMP/multiple_loops_outer_parallel.ll
index 00f18aebbcd5a5..ec1ccdce94508d 100644
--- a/polly/test/IstAstInfo/OpenMP/multiple_loops_outer_parallel.ll
+++ b/polly/test/IstAstInfo/OpenMP/multiple_loops_outer_parallel.ll
@@ -1,13 +1,10 @@
; RUN: opt %loadPolly -polly-print-ast -polly-parallel -polly-parallel-force -disable-output < %s | FileCheck %s
-; RUN: opt %loadPolly -print-polyhedral-info -polly-check-parallel -disable-output < %s | FileCheck %s -check-prefix=PINFO
;
; void jd(int *A) {
; CHECK: #pragma omp parallel for
-; PINFO: for.cond2: Loop is parallel.
; for (int i = 0; i < 1024; i++)
; A[i] = 1;
; CHECK: #pragma omp parallel for
-; PINFO: for.cond: Loop is parallel.
; for (int i = 0; i < 1024; i++)
; A[i] = A[i] * 2;
; }
diff --git a/polly/test/IstAstInfo/OpenMP/nested_loop_both_parallel.ll b/polly/test/IstAstInfo/OpenMP/nested_loop_both_parallel.ll
index bcb35cb4b07c10..9c006906054082 100644
--- a/polly/test/IstAstInfo/OpenMP/nested_loop_both_parallel.ll
+++ b/polly/test/IstAstInfo/OpenMP/nested_loop_both_parallel.ll
@@ -1,5 +1,4 @@
; RUN: opt %loadPolly -polly-print-ast -polly-parallel -disable-output < %s | FileCheck %s
-; RUN: opt %loadPolly -print-polyhedral-info -polly-check-parallel -disable-output < %s | FileCheck %s -check-prefix=PINFO
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
; for (i = 0; i < 1024; i++)
@@ -50,6 +49,3 @@ ret:
; CHECK-NOT: #pragma omp parallel for
; CHECK: for (int c1 = 0; c1 <= 1023; c1 += 1)
; CHECK: Stmt_loop_body(c0, c1);
-;
-; PINFO: loop.i: Loop is parallel.
-; PINFO-NEXT: loop.j: Loop is parallel.
diff --git a/polly/test/IstAstInfo/OpenMP/nested_loop_both_parallel_parametric.ll b/polly/test/IstAstInfo/OpenMP/nested_loop_both_parallel_parametric.ll
index e2ff5d5756b133..356762a2ae5b92 100644
--- a/polly/test/IstAstInfo/OpenMP/nested_loop_both_parallel_parametric.ll
+++ b/polly/test/IstAstInfo/OpenMP/nested_loop_both_parallel_parametric.ll
@@ -1,5 +1,4 @@
; RUN: opt %loadPolly -polly-print-ast -polly-parallel -polly-parallel-force -disable-output < %s | FileCheck %s
-; RUN: opt %loadPolly -print-polyhedral-info -polly-check-parallel -disable-output < %s | FileCheck %s -check-prefix=PINFO
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
; int A[1024][1024];
; void bar(int n) {
@@ -47,6 +46,3 @@ ret:
; CHECK: #pragma simd
; CHECK: for (int c1 = 0; c1 < n; c1 += 1)
; CHECK: Stmt_loop_body(c0, c1);
-
-; PINFO: loop.i: Loop is parallel.
-; PINFO-NEXT: loop.j: Loop is parallel.
diff --git a/polly/test/IstAstInfo/OpenMP/nested_loop_inner_parallel.ll b/polly/test/IstAstInfo/OpenMP/nested_loop_inner_parallel.ll
index 17ef7fe6f251d2..066fc39def6ac4 100644
--- a/polly/test/IstAstInfo/OpenMP/nested_loop_inner_parallel.ll
+++ b/polly/test/IstAstInfo/OpenMP/nested_loop_inner_parallel.ll
@@ -1,5 +1,4 @@
; RUN: opt %loadPolly -polly-print-ast -polly-parallel -polly-parallel-force -disable-output < %s | FileCheck %s
-; RUN: opt %loadPolly -print-polyhedral-info -polly-check-parallel -disable-output< %s | FileCheck %s -check-prefix=PINFO
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
; for (i = 0; i < n; i++)
@@ -45,6 +44,3 @@ ret:
; CHECK: #pragma omp parallel for
; CHECK: for (int c1 = 0; c1 < n; c1 += 1)
; CHECK: Stmt_loop_body(c0, c1);
-
-; PINFO: loop.i: Loop is not parallel.
-; PINFO-NEXT: loop.j: Loop is parallel.
diff --git a/polly/test/IstAstInfo/OpenMP/nested_loop_outer_parallel.ll b/polly/test/IstAstInfo/OpenMP/nested_loop_outer_parallel.ll
index bc381e2c87fdb8..77dd55cb7605e3 100644
--- a/polly/test/IstAstInfo/OpenMP/nested_loop_outer_parallel.ll
+++ b/polly/test/IstAstInfo/OpenMP/nested_loop_outer_parallel.ll
@@ -1,5 +1,4 @@
; RUN: opt %loadPolly -polly-print-ast -polly-parallel -disable-output < %s | FileCheck %s
-; RUN: opt %loadPolly -print-polyhedral-info -polly-check-parallel -disable-output < %s | FileCheck %s -check-prefix=PINFO
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
; for (i = 0; i < n; i++)
@@ -44,6 +43,3 @@ ret:
; CHECK: for (int c0 = 0; c0 < n; c0 += 1)
; CHECK: for (int c1 = 0; c1 < n; c1 += 1)
; CHECK: Stmt_loop_body(c0, c1);
-
-; PINFO: loop.i: Loop is parallel.
-; PINFO-NEXT: loop.j: Loop is not parallel.
diff --git a/polly/test/IstAstInfo/OpenMP/single_loop_param_non_parallel.ll b/polly/test/IstAstInfo/OpenMP/single_loop_param_non_parallel.ll
index ee02dafeedeb15..b61ebc9379b7ff 100644
--- a/polly/test/IstAstInfo/OpenMP/single_loop_param_non_parallel.ll
+++ b/polly/test/IstAstInfo/OpenMP/single_loop_param_non_parallel.ll
@@ -1,5 +1,4 @@
; RUN: opt %loadPolly -polly-print-ast -polly-parallel -disable-output < %s | FileCheck %s
-; RUN: opt %loadPolly -print-polyhedral-info -polly-check-parallel -disable-output < %s | FileCheck %s -check-prefix=PINFO
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
; for (i = 0; i < n; i++)
@@ -31,4 +30,3 @@ ret:
; CHECK: for (int c0 = 0; c0 < n; c0 += 1)
; CHECK: Stmt_loop_body(c0)
-; PINFO: loop.header: Loop is not parallel.
diff --git a/polly/test/IstAstInfo/OpenMP/single_loop_param_parallel.ll b/polly/test/IstAstInfo/OpenMP/single_loop_param_parallel.ll
index a5831302471eea..5c92a916818679 100644
--- a/polly/test/IstAstInfo/OpenMP/single_loop_param_parallel.ll
+++ b/polly/test/IstAstInfo/OpenMP/single_loop_param_parallel.ll
@@ -1,5 +1,4 @@
; RUN: opt %loadPolly -polly-print-ast -polly-parallel -polly-parallel-force -disable-output < %s | FileCheck %s
-; RUN: opt %loadPolly -print-polyhedral-info -polly-check-parallel -disable-output < %s | FileCheck %s -check-prefix=PINFO
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
; for (i = 0; i < n; i++)
@@ -34,4 +33,3 @@ ret:
; CHECK: #pragma omp parallel for
; CHECK: for (int c0 = 0; c0 < n; c0 += 1)
; CHECK: Stmt_loop_body(c0)
-; PINFO: loop.header: Loop is parallel.
diff --git a/polly/test/IstAstInfo/OpenMP/single_loop_param_parallel_computeout.ll b/polly/test/IstAstInfo/OpenMP/single_loop_param_parallel_computeout.ll
index 31a906ed403c88..352d8791996757 100644
--- a/polly/test/IstAstInfo/OpenMP/single_loop_param_parallel_computeout.ll
+++ b/polly/test/IstAstInfo/OpenMP/single_loop_param_parallel_computeout.ll
@@ -1,5 +1,4 @@
; RUN: opt %loadPolly -polly-print-ast -polly-parallel -polly-dependences-computeout=1 -disable-output < %s | FileCheck %s
-; RUN: opt %loadPolly -print-polyhedral-info -polly-check-parallel -disable-output < %s | FileCheck %s -check-prefix=PINFO
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
; for (i = 0; i < n; i++)
@@ -34,4 +33,3 @@ ret:
; CHECK-NOT: #pragma omp parallel for
; CHECK: for (int c0 = 0; c0 < n; c0 += 1)
; CHECK: Stmt_loop_body(c0)
-; PINFO: loop.header: Loop is parallel.
diff --git a/polly/test/IstAstInfo/dependence_distance_constant.ll b/polly/test/IstAstInfo/dependence_distance_constant.ll
index 8b0e4d267c14df..9b7fb93f2f676d 100644
--- a/polly/test/IstAstInfo/dependence_distance_constant.ll
+++ b/polly/test/IstAstInfo/dependence_distance_constant.ll
@@ -1,12 +1,9 @@
; RUN: opt %loadPolly -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s
-; RUN: opt %loadPolly -print-polyhedral-info -polly-check-parallel -disable-output < %s | FileCheck %s -check-prefix=PINFO
;
; void f(int *A, int N) {
; CHECK: #pragma minimal dependence distance: 1
-; PINFO: for.cond: Loop is not parallel.
; for (int j = 0; j < N; j++)
; CHECK: #pragma minimal dependence distance: 8
-; PINFO-NEXT: for.cond1: Loop is not parallel.
; for (int i = 0; i < N; i++)
; A[i + 8] = A[i] + 1;
; }
diff --git a/polly/test/IstAstInfo/dependence_distance_multiple_constant.ll b/polly/test/IstAstInfo/dependence_distance_multiple_constant.ll
index 4dae80902457c3..bc21e9e07ad897 100644
--- a/polly/test/IstAstInfo/dependence_distance_multiple_constant.ll
+++ b/polly/test/IstAstInfo/dependence_distance_multiple_constant.ll
@@ -1,9 +1,7 @@
; RUN: opt %loadPolly -basic-aa -polly-stmt-granularity=bb -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s
-; RUN: opt %loadPolly -polly-stmt-granularity=bb -print-polyhedral-info -polly-check-parallel -disable-output < %s | FileCheck %s -check-prefix=PINFO
;
; void f(int *restrict A, int *restrict B, int N) {
; CHECK: #pragma minimal dependence distance: 5
-; PINFO: for.cond: Loop is not parallel.
; for (int i = 0; i < N; i++) {
; A[i + 7] = A[i] + 1;
; B[i + 5] = B[i] + 1;
diff --git a/polly/test/IstAstInfo/dependence_distance_parametric.ll b/polly/test/IstAstInfo/dependence_distance_parametric.ll
index 3133b732c9dbc1..fa569a8386b862 100644
--- a/polly/test/IstAstInfo/dependence_distance_parametric.ll
+++ b/polly/test/IstAstInfo/dependence_distance_parametric.ll
@@ -1,12 +1,9 @@
; RUN: opt %loadPolly -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s
-; RUN: opt %loadPolly -print-polyhedral-info -polly-check-parallel -disable-output < %s | FileCheck %s -check-prefix=PINFO
;
; void f(int *A, int N, int c) {
; CHECK: #pragma minimal dependence distance: 1
-; PINFO: for.cond: Loop is not parallel.
; for (int j = 0; j < N; j++)
; CHECK: #pragma minimal dependence distance: max(-c, c)
-; PINFO-NEXT: for.cond1: Loop is not parallel.
; for (int i = 0; i < N; i++)
; A[i + c] = A[i] + 1;
; }
diff --git a/polly/test/IstAstInfo/dependence_distance_parametric_expr.ll b/polly/test/IstAstInfo/dependence_distance_parametric_expr.ll
index 5cce8c84a903cc..7f280e0c542ca0 100644
--- a/polly/test/IstAstInfo/dependence_distance_parametric_expr.ll
+++ b/polly/test/IstAstInfo/dependence_distance_parametric_expr.ll
@@ -1,12 +1,9 @@
; RUN: opt %loadPolly -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s
-; RUN: opt %loadPolly -print-polyhedral-info -polly-check-parallel -disable-output < %s | FileCheck %s -check-prefix=PINFO
;
; void f(int *A, int N, int c, int v) {
; CHECK: #pragma minimal dependence distance: 1
-; PINFO: for.cond: Loop is not parallel.
; for (int j = 0; j < N; j++)
; CHECK: #pragma minimal dependence distance: max(-c - v, c + v)
-; PINFO-NEXT: for.cond1: Loop is not parallel.
; for (int i = 0; i < N; i++)
; A[i + c + v] = A[i] + 1;
; }
diff --git a/polly/test/IstAstInfo/dependence_distance_varying.ll b/polly/test/IstAstInfo/dependence_distance_varying.ll
index 71c045b69e28a6..d609c2f210f8d1 100644
--- a/polly/test/IstAstInfo/dependence_distance_varying.ll
+++ b/polly/test/IstAstInfo/dependence_distance_varying.ll
@@ -1,9 +1,7 @@
; RUN: opt %loadPolly -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s
-; RUN: opt %loadPolly -print-polyhedral-info -polly-check-parallel -disable-output < %s | FileCheck %s -check-prefix=PINFO
;
; void f(int *A, int N) {
; CHECK: #pragma minimal dependence distance: -(N % 2) + 2
-; PINFO: for.cond: Loop is not parallel.
; for (int i = 0; i < N; i++)
; A[i] = A[N - i] + 1;
; }
diff --git a/polly/test/IstAstInfo/dependence_distance_varying_in_outer_loop.ll b/polly/test/IstAstInfo/dependence_distance_varying_in_outer_loop.ll
index 463e942fc958a6..8ed3220353c1b5 100644
--- a/polly/test/IstAstInfo/dependence_distance_varying_in_outer_loop.ll
+++ b/polly/test/IstAstInfo/dependence_distance_varying_in_outer_loop.ll
@@ -1,12 +1,9 @@
; RUN: opt %loadPolly -polly-canonicalize -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s
-; RUN: opt %loadPolly -print-polyhedral-info -polly-check-parallel -disable-output < %s | FileCheck %s -check-prefix=PINFO
;
; void f(int *restrict A, int *restrict sum) {
; CHECK: #pragma minimal dependence distance: 1
-; PINFO: for.cond: Loop is not parallel.
; for (int j = 0; j < 1024; j++)
; CHECK: #pragma minimal dependence distance: 1
-; PINFO-NEXT: for.cond1: Loop is not parallel.
; for (int i = j; i < 1024; i++)
; A[i - 3] = A[j] * 2 + A[j] + 2;
; }
diff --git a/polly/test/IstAstInfo/dependence_distance_varying_multiple.ll b/polly/test/IstAstInfo/dependence_distance_varying_multiple.ll
index 67917b4a919f73..73768e9c308a46 100644
--- a/polly/test/IstAstInfo/dependence_distance_varying_multiple.ll
+++ b/polly/test/IstAstInfo/dependence_distance_varying_multiple.ll
@@ -1,10 +1,8 @@
; RUN: opt %loadPolly -basic-aa -polly-stmt-granularity=bb -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s
-; RUN: opt %loadPolly -polly-stmt-granularity=bb -print-polyhedral-info -polly-check-parallel -disable-output < %s | FileCheck %s -check-prefix=PINFO
;
; void f(int *restrict A, int *restrict B, int *restrict C, int *restrict D,
; int *restrict E, int N) {
; CHECK: #pragma minimal dependence distance: N >= 35 ? 1 : N >= 17 && N <= 34 ? 2 : 5
-; PINFO: for.cond: Loop is not parallel.
; for (int i = 0; i < N; i++) {
; A[i] = A[100 - 2 * i] + 1;
; B[i] = B[100 - 3 * i] + 1;
diff --git a/polly/test/IstAstInfo/reduction_clauses_multidimensional_access.ll b/polly/test/IstAstInfo/reduction_clauses_multidimensional_access.ll
index b588e42df5d1e7..697b6ca50d4441 100644
--- a/polly/test/IstAstInfo/reduction_clauses_multidimensional_access.ll
+++ b/polly/test/IstAstInfo/reduction_clauses_multidimensional_access.ll
@@ -1,14 +1,10 @@
; RUN: opt %loadPolly -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s
-; RUN: opt %loadPolly -print-polyhedral-info -polly-check-parallel -disable-output < %s | FileCheck %s -check-prefix=PINFO
;
; CHECK: #pragma known-parallel reduction (^ : MemRef_sum)
; void f(int N, int M, int P, int sum[P][M]) {
-; PINFO: for.cond: Loop is not parallel.
; for (int i = 0; i < N; i++)
-; PINFO-NEXT: for.cond1: Loop is parallel.
; for (int j = 0; j < P; j++)
; CHECK: #pragma simd
-; PINFO-NEXT: for.cond4: Loop is parallel.
; for (int k = 0; k < M; k++)
; sum[j][k] ^= j;
; }
diff --git a/polly/test/IstAstInfo/reduction_in_one_dimension.ll b/polly/test/IstAstInfo/reduction_in_one_dimension.ll
index 86a1b67f7292de..797115b6f8d704 100644
--- a/polly/test/IstAstInfo/reduction_in_one_dimension.ll
+++ b/polly/test/IstAstInfo/reduction_in_one_dimension.ll
@@ -1,13 +1,10 @@
; RUN: opt %loadPolly -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s
-; RUN: opt %loadPolly -print-polyhedral-info -polly-check-parallel -disable-output < %s | FileCheck %s -check-prefix=PINFO
;
; Verify that we won't privatize anything in the outer dimension
;
; CHECK: #pragma known-parallel
-; PINFO: for.cond: Loop is parallel.
; CHECK: for (int c0 = 0; c0 < 2 * n; c0 += 1)
; CHECK: #pragma simd reduction
-; PINFO-NEXT: for.cond1: Loop is not parallel.
; CHECK: for (int c1 = 0; c1 <= 1023; c1 += 1)
; CHECK: Stmt_for_body3(c0, c1);
;
diff --git a/polly/test/IstAstInfo/reduction_loop_reversal.ll b/polly/test/IstAstInfo/reduction_loop_reversal.ll
index c940f5c08fa1eb..d30119787d8e0e 100644
--- a/polly/test/IstAstInfo/reduction_loop_reversal.ll
+++ b/polly/test/IstAstInfo/reduction_loop_reversal.ll
@@ -1,5 +1,4 @@
; RUN: opt %loadPolly -polly-import-jscop -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s
-; RUN: opt %loadPolly -print-polyhedral-info -polly-check-parallel -disable-output < %s | FileCheck %s -check-prefix=PINFO
;
; CHECK-NOT: #pragma simd{{\s*$}}
; CHECK: #pragma simd reduction
@@ -7,9 +6,6 @@
; CHECK: #pragma simd{{\s*$}}
; CHECK: Stmt_S1(n - c1)
;
-; PINFO: for.cond2: Loop is parallel.
-; PINFO-NEXT: for.cond: Loop is not parallel.
-;
; void rlr(int *A, long n) {
; for (long i = 0; i < 2 * n; i++)
; S0: A[0] += i;
diff --git a/polly/test/IstAstInfo/reduction_modulo_schedule.ll b/polly/test/IstAstInfo/reduction_modulo_schedule.ll
index 21a78e5487621d..c39ffa591484dc 100644
--- a/polly/test/IstAstInfo/reduction_modulo_schedule.ll
+++ b/polly/test/IstAstInfo/reduction_modulo_schedule.ll
@@ -1,5 +1,4 @@
; RUN: opt %loadPolly -polly-import-jscop -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s
-; RUN: opt %loadPolly -print-polyhedral-info -polly-check-parallel -disable-output < %s | FileCheck %s -check-prefix=PINFO
;
; CHECK: #pragma known-parallel reduction (+ : MemRef_A)
; CHECK-NEXT: for (int c0 = 0; c0 <= 2; c0 += 1) {
@@ -13,9 +12,6 @@
; CHECK-NEXT: Stmt_S0(c1);
; CHECK-NEXT: }
;
-; PINFO: for.cond2: Loop is parallel.
-; PINFO-NEXT: for.cond: Loop is not parallel.
-;
; void rms(int *A, long n) {
; for (long i = 0; i < 2 * n; i++)
; S0: A[0] += i;
More information about the llvm-commits
mailing list